Error: no such theme PatternSkinTheme
-- SarahHenney - 2012-06-08

Here's a chart of things disclosed, to be disclosed, potentially disclosed etc... in Gimp-2.6 version of the SDC.

All the functions that handle disclosures are located in /app/core/disclosehandlers.c. By "handlers" we mean the emitted disclose signal is sent to one of them, the data is interpreted and the resulting message is sent to the Disclose Window GUI.

NOTE: Actions performed through any of the Dockable Dialogues are handled in vanilla Gimp in different locations than actions performed through the toolbox (most of the time). Since it seems the existing disclosures exist mostly for the toolbox version and not the Dockable Dialogue version, I (SH) will focus on implementing the toolbox versions first, and make Dockable Dialogue versions second priority unless they can be implemented easily.

Why have I decided this since Dockable Dialogues seem to offer options not accessible from the toolbox? Because changing colors through the DD is difficult (for various reasons) and I've already wasted enough time trying figure it out when there's already a disclosure for the toolbox. I'll come back to implementing Dockable Dialogue disclosures later.

Disclosed Actions:

NOTE! these may or may not actually be implemented in MediaScheme - that will be checked later.

Note that "image" may mean "drawable" or even "layer" in some cases.

CFSDC11 = taken from the SDC 2011 chart, so we need to double-check the information.

NW = Needs Wrapper

IEW = Wrapper is in the Illustrative Examples list <- will not always be listed in below procedures (if it isn't listed, that doesn't mean we're using a different wrapper)

ND = Needs Disclosure - Nothing anywhere discloses it.

PD = Partial Disclosure - Toolbox discloses but Dockable Dialogues don't

BD = Bad Disclosure (incorrect syntax, wrong procedure, etc.)

MFIN = Mostly finished disclosure (what still needs to be done isn't necessary for the disclosure to be correct OR we decided not to implement a part. = PD)

FIN = Finished disclosure (and everything recorded in the row is correct/up to date - except perhaps the Procedure Browser Script - we need to go through this to check the wrapper correctness.)
Action Flags Procedure Browser Script

Wrapper exists MediaScript

(in current version OR in Marsha's wrappers)
Mediascript Script/Wrapper Location(s) in GUI Location(s) of calls in GIMP Code Disclosure Procedure (signal handlers in app/core/disclosehandlers.c)
Disclosure Status
Pending?????? free_line_disclose_scheme (GimpItem *item) We are not sure what this is used for
Foreground Color Change

PD
gimp-context-set-foreground
(context-set-fgcolor! (rgb-new (r g b)))

Color Selector Tool in Toolbox

Color Dockable Dialog

Palette Editor Dockable Dialogue

(Toolbox only) created in: app/core/gimpcontext.c

emitted in: app/widgets/gimptoolbox-color-area.c

(Dockable Dialogues)
(Toolbox) foreground_changed_disclose_scheme (GimpContext *context)

Only the Toolbox version discloses properly.

SH - see June 20 notes for attempts at Dockable Dialogue fix.
Background Color Change

PD
gimp-context-set-background (context-set-bgcolor! (rgb-new (r g b)))

Color Selector Tool in Toolbox

Color Dockable Dialog

(Toolbox only) created in: app/core/gimpcontext.c

emitted in: app/widgets/gimptoolbox-color-area.c.
(Toolbox) background_changed_disclose_scheme (GimpContext *context)

Only the Toolbox version discloses properly.

See notes for Foreground Color Change
Foreground/Background Color Reset

FIN
There is one, but we're using the context-set-*gcolor! procedures already defined instead of adding another wrapper.

(context-set-fgcolor! (rgb-new 0 0 0))

(context-set-bgcolor! (rgb-new 255 255 255))

Toolbox: Black/White Reset Tiles next to the Color Selector Tool

Dockable Dialogue: Reset Tiles in Color dialog

Created and emitted in:

/app/core/gimpcontext.c

foreground_changed_disclose_scheme (GimpContext *context)

background_changed_disclose_scheme (GimpContext *context)

Both Toolbox and Dockable Dialogue versions work.

Discloses only fg or/and bg color if it changes.
Foreground/Background Color Swap

MFIN

IEW
gimp-context-swap-colors (context-swap-colors!)

Toolbox (Swap Arrow next to the color selector tool)

Dockable Dialogue: Color dialogue (Swap arrow next to color selector tool)

created in:

/app/core/gimpcontext.c

emitted from: app/widgets/gimpfgbgeditor.c
color_swap_disclose_scheme (GimpContext *context)

Both GUI sources disclose properly.

However, it displays even if the bg/fg are the same color. Should I change this? I nominate no. -SH(if yes, see how the color reset code is written - swap will follow the same idea)
Color Picker Tool PD

gimp-image-pick-color (context-set-fgcolor! (image-get-pixel image x y))

Toolbox: Color picker tool (eyedropper icon)

Dockable Dialogue: Color dialogue (eyedropper icon)
app/tools/gimpcolorpickertool.c pick_color_disclose_scheme (GimpColorPickerTool *picker_tool)

Discloses correctly except when accessed through Windows->Dockable Dialogs->Colors Color-Picker option.(this may be in widgets?)

Set Brush
MFIN gimp-context-set-brush - already wrapped
(context-set-brush! "brush name")

Toolbox

Dockable Dialogue: Brushes

Created and emitted in:

/app/core/gimpbrushtool.c.
gimp_brush_disclosure_scheme (GimpBrushTool *brush_tool)

Both Toolbox and DD disclose properly.
Set Font

ND

NW
gimp-context-set-font Font dockable dialog, Text tool options
Text Box

IEW

ND

(image-draw-text! image str font size col row angle)
Text Tool
Set Gradient

IEW

ND
gimp-context-set-gradient
(context-set-gradient!) Blend tool options, Gradient tab
Set Opacity

PD
gimp-context-set-opacity (context-set-opacity! opacity) Most drawing tool options (I think)
Created and emitted in: app/core/gimpcontext.c opacity_set_disclose_scheme (GimpContext *context, gint opacity) Discloses for all tested, but discloses all the time. Basically the same problem as the DD in Foreground Color Change. so far no fix.
Set Paint Method

NW

ND
gimp-context-set-paint-method ?
Set Paint Mode

NW

ND
gimp-context-set-paint-mode Paintbrush Tool Options, Pencil Tool Options, Blend tool options (?)
Set Palette

NW

ND
gimp-context-set-palette Palette Dockable Disclosure
Set Pattern

IEW

ND
gimp-context-set-pattern (context-set-pattern! pattern) Bucket Fill Tool options, Pattern Dockable Dialog

Select Rectangle
FIN not necessary (image-select-rectangle! image SELECTION-TYPE left top width height) Toolbox: Rectangle selection tool

Created in: /app/tools/gimptool.c

Emitted in: /app/tools/gimprectangleselecttool.c
select_disclose_scheme (GimpTool *tool, gint x, gint y, gint w, gint h, GimpChannelOps option) Discloses correctly

Select Ellipse
FIN not necessary (image-select-ellipse! image SELECTION-TYPE left top width height) Elliptical selection tool in toolbar

Created in: /app/tools/gimptool.c

Emitted in: /app/tools/gimpellipseselecttool.c
select_disclose_scheme (GimpTool *tool, gint x, gint y, gint w, gint h, GimpChannelOps option) Discloses correctly.
Fuzzy Select

MFIN

NW

gimp-fuzzy-select


? gimp-fuzzy-select-full

(gimp-fuzzy-select! image x y threshold)

?
Fuzzy Select Tool in toolbox (Magic wand button)

Created in: /app/core/gimpimage.c

Emitted in: /app/tools/gimpfuzzyselecttool.c
fuzzy_select_disclose_scheme (GimpImage *image, gint x, gint y, gint threshold)
fuzzy-select displays correctly. Not sure what the select-full does.
Select by Color

IEW

ND

gimp-by-color-select
(image-select-by-color! image color threshold) Select by Color Tool in toolbox

Select All

CFSDC11

ND
(image-select-all! image) Select->All

Select Nothing

CFSDC11

ND
(image-select-nothing! image) Select->None

Select Inverse

CFSDC11

ND
(image-select-inverse! image) Select->Invert

Fill Selection

CFSDC11

ND
(image-fill-selection! image) Edit->Fill with FG Color gimp-drawable-bucket-fill.c <-not the correct tool for this Fill with FG color fills the entire canvas if nothing is selected - conditionals might be helpful here
Stroke Selection PD gimp-edit-stroke (I think) (image-stroke-selection! image) Edit->Stroke Selection

Created in: /app/core/gimpitem.c

Emitted in: /app/core/gimpdrawable-stroke.c
stroke_disclose_scheme (GimpItem *item) Discloses when "Stroke line" is being use, but not when "Stroke with a paint tool" is used.
New Image MFIN
(image-new width height) (image-new image)
File->New, Keyboard Shortcut, Pasting

Created in: /app/core/gimp.c

Emitted in: /app/core/gimpimage.c
image_new_disclose_scheme (Gimp *gimp, gint width, gint height) Disclose works but code is kinda messy. (see procsrecorded.txt for notes - SH)
Load Image FIN
gimp-file-load (image-load load-path) File->Open

Created in: /app/core/gimpimage.c

Emitted in: /app/file/file-open.c
file_save_disclose_scheme (GimpImage *image, gchar *filename) Disclose works.
Save Image FIN ? gimp-file-save (image-save image save-path) File->Save OR File->Save As

Created in: /app/core/gimpimage.c

Emitted in: /app/file/file-save.c
file_save_disclose_scheme (GimpImage *image, gchar *filename) Disclose works.
Copy Image or Selection

IEW

ND
gimp-edit-copy (image-copy-selection image name) Edit->Copy
Cut Image or Selection

IEW

ND
gimp-edit-cut (image-cut-selection! image name) Edit->Cut
Paste Image or Selection

IEW

ND
gimp-edit-paste (image-paste! image col row buffer) Edit->Paste
Image from Selection

IEW

ND
(selection->image image)

???

This is useful enough that it SHOULD be in the GIMP's GUI somewhere
Crop Image

IEW

ND
(image-crop! image new-width new-height offx offy) Crop Tool in Toolbox
Resize Image

IEW

ND

(image-resize! image new-width new-height)

Also includes a proportional resize proc
Image->Canvas Size
Image Draw Line
PD

?
(image-draw-line! image col1 row1 col2 row2) Toolbox: Paintbrush tool (when blot + shift-click is used)

Created in: /app/tools/gimptool.c

Emitted in: /app/tools/gimppainttool.c
draw_line_disclose_scheme (GimpTool *tool, GimpPaintCore *core) Discloses properly but discloses the same for everything (brush, pencil, erase). This needs to be changed. -SH

Image Set Pixel

CFSDC11 (modified)

ND
(image-set-pixel! image x y)

Pencil Tool with brush set to "Circle (01)" or "pixel (1x1 square)"

The Pen tool has evil antialiasing, and so one-pixel sized brushes DO NOT WORK
Pencil

NW

BD
gimp-pencil
Airbrush

BD
(image-airbrush-line! image pressure col1 row1 col2 row2)
Heal

NW

ND
gimp-heal Heal Tool
Blend or Gradient

IEW

gimp-edit-blend (image-gradient-fill! image grad-type grad-length col1 row1 col2 row2) Blend Tool

Discloses, but displays GRADIENT-RADIAL instead of RADIAL

I added the GRADIENT- prefix to the global variable names, because some procedures also need LINEAR and RADIAL but assign different numbers to the names
Gradient Line IEW (image-gradient-line! image grad-length col1 row1 col2 row2) Paintbrush, with "Use Color from Gradient" selected in the options
Change Brightness and Contrast Levels

IEW

ND
gimp-brightness-contrast

(image-brightness! image brightness)

(image-contrast! image contrast)
Color-> Brightness-contrast
Colorize

IEW

ND
gimp-colorize (image-colorize! image hsv) Color-> Colorize
Desaturate Image

IEW

ND
gimp-desaturate-full (image-desaturate-selection! image) Color-> Desaturate
Change Hue and Saturation Levels

IEW

ND
gimp-hue-saturation

(image-hue! image hue)

(image-saturation! image saturation)

(image-value! image value)
Color-> Hue-Saturation
Equalize

IEW

ND
(image-equalize! image) Color-> Auto-> Equalize
Posterize

IEW

ND
(image-posterize! image levels) Color-> Posterize
Invert Colors

IEW

ND
(image-invert-colors! image) Color-> Invert
Adjust Color Balance

IEW

ND

(image-balance-midtones! image red green blue)

(image-balance-highlights! image red green blue)

(image-balance-shadows! image red green blue)
Color-> Color Balance
Bucket Fill

PD

(image-fg-fill-threshold! image threshold x y)

(image-bg-fill-threshold! image threshold x y)

(image-pattern-fill-threshold! image threshold x y)

(image-fg-fill-selection! image)

(image-bg-fill-selection! image)

(image-pattern-fill-selection! image)

Bucket Fill Tool

Tools-> Paint-Tools-> Bucket Fill

Created in: /app/core/gimpdrawable.c

Emitted in: /app/core/gimpdrawable-bucket-fill.c
bucket_fill_disclose_scheme (GimpDrawable *drawable, gint type, gint image_id, gint x, gint y, gint threshold, gint hold) The fill-thresholds! work, but fill-selection is never reached.
Flip Selection

PD
gimp-drawable-transform-flip

(selection-hflip! image)

(selection-vflip! image)

Toolbox: Flip Tool

Image-> Transform-> Flip Vertically

Image-> Transform-> Flip Horizontally

Created in: /app/tools/gimptransformtool.c

Toolbox emitted in: /app/tools/fliptool.c
flip_disclose_scheme (GimpTransformTool *tool, gint flip_type) Only the toolbox discloses correctly.
Perspective Transform

FIN
gimp-drawable-transform-perspective

(selection-transform-perspective! image* x1 y1 x2 y2 x3 y3 x4 y4)

*image may be drawable. I assume each (x,y) coordinate corresponds to each corner in the virtual transform outline.
Toolbox: Perspective Tool

Created in: /app/tools/gimptransformtool.c

Emitted in: /app/tools/gimptransformtool.c
transform_disclose_scheme (GimpTransformTool *tool) Discloses correctly.
Shear PD
gimp-drawable-transform-shear

(selection-transform-hshear! image* horizontal-shear)

(selection-transform-vshear! image* vertical-shear)

*note that "image" might mean "drawable"

Toolbox: Shear Tool

Created in: /app/tools/gimptransformtool.c

Emitted in: /app/tools/gimptransformtool.c
transform_disclose_scheme (GimpTransformTool *tool)

Both disclosures work, but only one direction will be disclosed at a time, even if both directions were sheared. What will happen: If the image is only sheared horizontally or vertically, only the corresponding Scheme procedure will be disclosed. If both directions are sheared, both will be disclosed.
Rotate

PD

gimp-drawable-transform-rotate

(selection-transform-rotate! image* degree)

*note that "image" might mean "drawable"

Rotate Tool in toolbox

Image-> Transform-> rotate 90 clockwise

Image-> Transform-> rotate 90 counter-clockwise

Image-> Transform-> rotate 180

Created in: /app/tools/gimptransformtool.c

Toolbox emitted in: /app/tools/gimptransformtool.c
transform_disclose_scheme (GimpTransformTool *tool)

Only the toolbox discloses correctly.

The disclosure itself doesn't disclose where the center about which the image is rotating is located. We might want to change this. - SH
Scale (Horizontal and/or Vertical)

FIN
gimp-drawable-transform-scale

(selection-transform-hscale! image* horizontal-scale)

(selection-transform-vscale! image* vertical-scale)

*note that "image" might mean "drawable"

Toolbox: Scale tool

Created in: /app/tools/gimptransformtool.c

Emitted in: /app/tools/gimptransformtool.c
transform_disclose_scheme (GimpTransformTool *tool)

Discloses correctly.

If the image is only scaled horizontally or vertically, only the corresponding Scheme procedure will be disclosed. If both directions are scaled, both will be disclosed.
Set Active Layer PD - needs to include the image too
gimp-image-set-active-layer

(image-set-layer! layer)

SHOULD be image and layer
Layer tab

Created in: /app/core/gimplayer.c

Emitted in: /app/core/gimpimage.c
set_layer_disclose_scheme (GimpLayer *layer) Discloses correctly as written, but the image should be included.
New Layer FIN gimp-layer-new

(image-new-layer! layer-id)
Layer->New Layer...

Created in: /app/core/gimplayer.c

Emitted in: /app/actions/layers-commands.c
new_layer_disclose_scheme (GimpLayer *layer) Discloses correctly.
gimp-layer-new-from-drawable

gimp-layer-new-from-visible

gimp-text-layer-new
Reposition Layer (in Layer Stack) FIN

gimp-image-raise-layer

gimp-image-lower-layer

(image-layer-raise! image layer)

or

(image-layer-lower! image layer)
Dockable Dialogue: Layers

Created in: /app/core/gimplayer.c

Emitted in: /app/core/gimpimage.c
reposition_layer_disclose_scheme (GimpLayer *layer, gint shift) Both disclose correctly
Motion Blur

IEW

ND
(image-blur-selection! image blur-type length angle col row)
Image Blot FIN ? (image-blot! image (position x y))

Toolbox:

Pencil tool OR Brush tool

Created in: /app/core/gimpitem.c

Emitted in: /app/tools/gimppainttool.c
free_line_disclose_scheme (GimpItem *item) Discloses correctly
Image Erase FIN ? (image-erase! image (position x y)) Toolbox: Erase tool

Created in: /app/core/gimpitem.c Emitted in: /app/tools/gimppainttool.c
free_line_disclose_scheme (GimpItem *item)
Discloses correctly
Image Burn FIN ? (image-burn! image (position x y)) Toolbox: Dodge/Burn tool

Created in: /app/core/gimpitem.c Emitted in: /app/tools/gimppainttool.c
free_line_disclose_scheme (GimpItem *item) Discloses correctly
Image Dodge FIN ? (image-dodge! image (position x y)) Toolbox: Dodge/Burn tool

Created in: /app/core/gimpitem.c Emitted in: /app/tools/gimppainttool.c
free_line_disclose_scheme (GimpItem *item) Discloses correctly
Image Sharpen FIN ? gimp-convolve (image-sharpen! image (position x y)) Toolbox: Blur/Sharpen tool

Created in: /app/core/gimpitem.c Emitted in: /app/tools/gimppainttool.c
free_line_disclose_scheme (GimpItem *item) Discloses correctly
Image Blur FIN ? gimp-convolve (image-blur! image (position x y)) Toolbox: Blur/Sharpen tool

Created in: /app/core/gimpitem.c Emitted in: /app/tools/gimppainttool.c
free_line_disclose_scheme (GimpItem *item) Discloses correctly
Image Smudge FIN
? (image-smudge! image (position x y)) Toolbox: Smudge tool

Created in: /app/core/gimpitem.c Emitted in: /app/tools/gimppainttool.c
free_line_disclose_scheme (GimpItem *item)
Discloses correctly
Image Draw Path FIN
? (image-draw-path! image (position-new x1 y1) ... (position-new x y))

Toolbox: Pencil tool OR Brush tool

Created in: /app/core/gimpitem.c Emitted in: /app/tools/gimppainttool.c
free_line_disclose_scheme (GimpItem *item)
Discloses correctly
Image Erase Path FIN ? (image-erase-path! image (position-new x1 y1) ... (position-new x y)) Toolbox: Erase tool

Created in: /app/core/gimpitem.c Emitted in: /app/tools/gimppainttool.c
free_line_disclose_scheme (GimpItem *item) Discloses correctly
Image Burn Path FIN ? (image-burn-path! image (position-new x1 y1) ... (position-new x y)) Toolbox: Dodge/Burn tool

Created in: /app/core/gimpitem.c Emitted in: /app/tools/gimppainttool.c
free_line_disclose_scheme (GimpItem *item) Discloses correctly
Image Dodge Path FIN ? (image-dodge-path! image (position-new x1 y1) ... (position-new x y)) Toolbox: Dodge/Burn tool

Created in: /app/core/gimpitem.c Emitted in: /app/tools/gimppainttool.c
free_line_disclose_scheme (GimpItem *item)
Discloses correctly
Image Sharpen Path FIN ? gimp-convolve (image-sharpen-path! image (position-new x1 y1) ... (position-new x y))
Toolbox: Blur/Sharpen tool

Created in: /app/core/gimpitem.c Emitted in: /app/tools/gimppainttool.c
free_line_disclose_scheme (GimpItem *item) Discloses correctly
Image Blur Path FIN ? gimp-convolve (image-blur-path! image (position-new x1 y1) ... (position-new x y)) Toolbox: Blur/Sharpen tool

Created in: /app/core/gimpitem.c Emitted in: /app/tools/gimppainttool.c
free_line_disclose_scheme (GimpItem *item) Discloses correctly
Image Smudge Path FIN ? (image-smudge-path! image (position-new x1 y1) ... (position-new x y)) Toolbox: Smudge tool

Created in: /app/core/gimpitem.c Emitted in: /app/tools/gimppainttool.c
free_line_disclose_scheme (GimpItem *item) Discloses correctly
Fill Gradient FIN ? (image-fill-gradient! image GRADIENT-TYPE x1 y1 x2 y2)
Toolbox: Blend tool

Created in: /app/core/gimpimage.c

Emitted in: /app/core/gimpdrawable-blend.c
gradient_draw_disclose_scheme (GimpImage *image, gint gradient_type, gint x1, gint y1, gint x2, gint y2)

Discloses correctly.

This fills the whole image (or the selection). Has NOTHING to do with using a brush with a gradient.
Image Move
FIN ? (image-move! xoffset yoffset) Toolbox: Move tool

Created in: /app/tools/gimptool.c

Emitted in: /app/tools/gimpmovetool.c
move_tool_disclose_scheme (GimpTool *tool, gint image_id, gint endx, gint endy)
Discloses correctly

Helper Procedures
Name of Procedure Description
accumulate_points collect points while blotting or drawing a line
Topic revision: r27 - 2012-07-02, SarahHenney
 

This site is powered by FoswikiCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding Foswiki? Send feedback