Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
GNOME
GIMP
Commits
65ae5245
Commit
65ae5245
authored
Aug 20, 1998
by
Raph Levien
Browse files
This is the integration of GdkRgb into Gimp.
parent
d4936d20
Changes
13
Expand all
Hide whitespace changes
Inline
Side-by-side
ChangeLog
View file @
65ae5245
1998-08-19 Raph Levien <raph@gimp.org>
This is the GdkRgb integration.
* app/gximage.c (gximage_put): Uses gdk_draw_rgb_image rather
than gdk_draw_image.
* app/image_render.c: gutted most of this, as it is now subsumed
by GdkRgb. In the process, gamma != 1.0 doesn't work anymore.
Also, speedups are almost certainly possible in a bunch of cases.
* app/info_window.c (get_shades): compiles and runs, but is
not functional.
* app/colormaps.c: gutted
* app/color_select.c: changed dither to max
A few things remain: the dithering is _not_ correctly aligned for
scrolling - looks like I'll need to add some more API to GdkRgb
for that. The gradient editor needs to be set to maximum
dithering. I'd like to draw the foreground and background colors
dithered so they don't quantize so much in 8bpp modes.
Wed Aug 19 21:00:00 PDT 1998 Ray Lehtiniemi <rayl@netrover.com>
* app/airbrush.c gdisplay.c gimage.h gimpimage.c gimpimage.h
...
...
app/color_select.c
View file @
65ae5245
...
...
@@ -206,6 +206,7 @@ color_select_new (int r,
gtk_widget_show
(
xy_frame
);
csp
->
xy_color
=
gtk_preview_new
(
GTK_PREVIEW_COLOR
);
gtk_preview_set_dither
(
GTK_PREVIEW
(
csp
->
xy_color
),
GDK_RGB_DITHER_MAX
);
gtk_preview_size
(
GTK_PREVIEW
(
csp
->
xy_color
),
XY_DEF_WIDTH
,
XY_DEF_HEIGHT
);
gtk_widget_set_events
(
csp
->
xy_color
,
COLOR_AREA_MASK
);
gtk_signal_connect_after
(
GTK_OBJECT
(
csp
->
xy_color
),
"expose_event"
,
...
...
@@ -223,6 +224,7 @@ color_select_new (int r,
gtk_widget_show
(
z_frame
);
csp
->
z_color
=
gtk_preview_new
(
GTK_PREVIEW_COLOR
);
gtk_preview_set_dither
(
GTK_PREVIEW
(
csp
->
z_color
),
GDK_RGB_DITHER_MAX
);
gtk_preview_size
(
GTK_PREVIEW
(
csp
->
z_color
),
Z_DEF_WIDTH
,
Z_DEF_HEIGHT
);
gtk_widget_set_events
(
csp
->
z_color
,
COLOR_AREA_MASK
);
gtk_signal_connect_after
(
GTK_OBJECT
(
csp
->
z_color
),
"expose_event"
,
...
...
app/colormaps.c
View file @
65ae5245
...
...
@@ -65,9 +65,6 @@ gulong *g_lookup_blue;
gulong
*
color_pixel_vals
;
gulong
*
gray_pixel_vals
;
static
int
reserved_entries
=
4
;
/* extra colors aside from color cube */
static
gulong
*
reserved_pixels
;
static
void
make_color
(
gulong
*
pixel_ptr
,
int
red
,
int
green
,
...
...
@@ -77,20 +74,7 @@ static void make_color (gulong *pixel_ptr,
static
void
set_app_colors
()
{
int
i
;
if
((
g_visual
->
type
==
GDK_VISUAL_PSEUDO_COLOR
)
||
(
g_visual
->
type
==
GDK_VISUAL_GRAYSCALE
))
{
foreground_pixel
=
reserved_pixels
[
0
];
background_pixel
=
reserved_pixels
[
1
];
old_color_pixel
=
reserved_pixels
[
2
];
new_color_pixel
=
reserved_pixels
[
3
];
}
else
{
cycled_marching_ants
=
FALSE
;
}
cycled_marching_ants
=
FALSE
;
make_color
(
&
g_black_pixel
,
0
,
0
,
0
,
FALSE
);
make_color
(
&
g_gray_pixel
,
127
,
127
,
127
,
FALSE
);
...
...
@@ -104,19 +88,9 @@ set_app_colors ()
store_color
(
&
old_color_pixel
,
0
,
0
,
0
);
store_color
(
&
new_color_pixel
,
255
,
255
,
255
);
/* marching ants pixels--if enabled */
if
(
cycled_marching_ants
)
for
(
i
=
0
;
i
<
8
;
i
++
)
{
marching_ants_pixels
[
i
]
=
reserved_pixels
[
i
+
reserved_entries
-
8
];
if
(
i
<
4
)
store_color
(
&
marching_ants_pixels
[
i
],
0
,
0
,
0
);
else
store_color
(
&
marching_ants_pixels
[
i
],
255
,
255
,
255
);
}
}
/* This probably doesn't belong here - RLL*/
static
unsigned
int
gamma_correct
(
int
intensity
,
double
gamma
)
{
...
...
@@ -144,17 +118,7 @@ get_color (int red,
int
green
,
int
blue
)
{
gulong
pixel
;
if
((
g_visual
->
type
==
GDK_VISUAL_PSEUDO_COLOR
)
||
(
g_visual
->
type
==
GDK_VISUAL_GRAYSCALE
))
pixel
=
color_pixel_vals
[(
red_ordered_dither
[
red
].
s
[
1
]
+
green_ordered_dither
[
green
].
s
[
1
]
+
blue_ordered_dither
[
blue
].
s
[
1
])];
else
store_color
(
&
pixel
,
red
,
green
,
blue
);
return
pixel
;
return
gdk_rgb_xpixel_from_rgb
((
red
<<
16
)
|
(
green
<<
8
)
|
blue
);
}
...
...
@@ -165,24 +129,7 @@ make_color (gulong *pixel_ptr,
int
blue
,
int
readwrite
)
{
GdkColor
col
;
red
=
gamma_correct
(
red
,
gamma_val
);
green
=
gamma_correct
(
green
,
gamma_val
);
blue
=
gamma_correct
(
blue
,
gamma_val
);
col
.
red
=
red
*
(
65535
/
255
);
col
.
green
=
green
*
(
65535
/
255
);
col
.
blue
=
blue
*
(
65535
/
255
);
col
.
pixel
=
*
pixel_ptr
;
if
(
readwrite
&&
((
g_visual
->
type
==
GDK_VISUAL_PSEUDO_COLOR
)
||
(
g_visual
->
type
==
GDK_VISUAL_GRAYSCALE
)))
gdk_color_change
(
g_cmap
,
&
col
);
else
gdk_color_alloc
(
g_cmap
,
&
col
);
*
pixel_ptr
=
col
.
pixel
;
*
pixel_ptr
=
get_color
(
red
,
green
,
blue
);
}
void
...
...
@@ -191,7 +138,7 @@ store_color (gulong *pixel_ptr,
int
green
,
int
blue
)
{
make_color
(
pixel_ptr
,
red
,
green
,
blue
,
TRUE
);
*
pixel_ptr
=
get_color
(
red
,
green
,
blue
);
}
...
...
@@ -200,43 +147,14 @@ get_standard_colormaps ()
{
GtkPreviewInfo
*
info
;
if
(
cycled_marching_ants
)
reserved_entries
+=
8
;
gtk_preview_set_gamma
(
gamma_val
);
gtk_preview_set_color_cube
(
color_cube_shades
[
0
],
color_cube_shades
[
1
],
color_cube_shades
[
2
],
color_cube_shades
[
3
]);
gtk_preview_set_install_cmap
(
install_cmap
);
gtk_preview_set_reserved
(
reserved_entries
);
/* so we can reinit the colormaps */
gtk_preview_reset
();
gtk_widget_set_default_visual
(
gtk_preview_get_visual
());
gtk_widget_set_default_colormap
(
gtk_preview_get_cmap
());
info
=
gtk_preview_get_info
();
g_visual
=
info
->
visual
;
if
(((
g_visual
->
type
==
GDK_VISUAL_PSEUDO_COLOR
)
||
(
g_visual
->
type
==
GDK_VISUAL_GRAYSCALE
))
&&
info
->
reserved_pixels
==
NULL
)
{
g_print
(
"GIMP cannot get enough colormaps to boot.
\n
"
);
g_print
(
"Try exiting other color intensive applications.
\n
"
);
g_print
(
"Also try enabling the (install-colormap) option in gimprc.
\n
"
);
swapping_free
();
brushes_free
();
patterns_free
();
palettes_free
();
gradients_free
();
palette_free
();
procedural_db_free
();
plug_in_kill
();
tile_swap_exit
();
gtk_exit
(
0
);
}
g_cmap
=
info
->
cmap
;
#if 0
color_pixel_vals = info->color_pixels;
gray_pixel_vals = info->gray_pixels;
reserved_pixels = info->reserved_pixels;
...
...
@@ -251,6 +169,7 @@ get_standard_colormaps ()
g_lookup_red = info->lookup_red;
g_lookup_green = info->lookup_green;
g_lookup_blue = info->lookup_blue;
#endif
set_app_colors
();
}
app/dialogs/info-window.c
View file @
65ae5245
...
...
@@ -57,6 +57,8 @@ static void
get_shades
(
GDisplay
*
gdisp
,
char
*
buf
)
{
sprintf
(
buf
,
"Using GdkRgb - we'll get back to you"
);
#if 0
GtkPreviewInfo *info;
info = gtk_preview_get_info ();
...
...
@@ -91,6 +93,7 @@ get_shades (GDisplay *gdisp,
sprintf (buf, "%d", gdisp->gimage->num_cols);
break;
}
#endif
}
static
void
...
...
app/display/gimpdisplay-render.c
View file @
65ae5245
This diff is collapsed.
Click to expand it.
app/display/gimpdisplayshell-render.c
View file @
65ae5245
This diff is collapsed.
Click to expand it.
app/display/gximage.c
View file @
65ae5245
...
...
@@ -31,7 +31,7 @@ struct _GXImage
GdkVisual
*
visual
;
/* visual appropriate to our depth */
GdkGC
*
gc
;
/* graphics context */
GdkImage
*
image
;
/* private data */
guchar
*
data
;
};
...
...
@@ -52,7 +52,7 @@ create_gximage (GdkVisual *visual, int width, int height)
gximage
->
visual
=
visual
;
gximage
->
gc
=
NULL
;
gximage
->
image
=
gdk_image_new
(
GDK_IMAGE_FASTEST
,
visual
,
width
,
height
);
gximage
->
data
=
g_malloc
(
width
*
height
*
3
);
return
gximage
;
}
...
...
@@ -60,7 +60,7 @@ create_gximage (GdkVisual *visual, int width, int height)
static
void
delete_gximage
(
GXImage
*
gximage
)
{
g
dk_image_destroy
(
gximage
->
image
);
g
_free
(
gximage
->
data
);
if
(
gximage
->
gc
)
gdk_gc_destroy
(
gximage
->
gc
);
g_free
(
gximage
);
...
...
@@ -86,25 +86,25 @@ gximage_free ()
guchar
*
gximage_get_data
()
{
return
gximage
->
image
->
mem
;
return
gximage
->
data
;
}
int
gximage_get_bpp
()
{
return
gximage
->
image
->
bpp
;
return
3
;
}
int
gximage_get_bpl
()
{
return
gximage
->
image
->
bpl
;
return
3
*
GXIMAGE_WIDTH
;
}
int
gximage_get_byte_order
()
{
return
gximage
->
image
->
byte_order
;
return
GDK_MSB_FIRST
;
}
void
...
...
@@ -117,8 +117,13 @@ gximage_put (GdkWindow *win, int x, int y, int w, int h)
gdk_gc_set_exposures
(
gximage
->
gc
,
TRUE
);
}
gdk_draw_image
(
win
,
gximage
->
gc
,
gximage
->
image
,
0
,
0
,
x
,
y
,
w
,
h
);
/* sync the draw image to make sure it has been displayed before continuing */
gdk_flush
();
gdk_draw_rgb_image
(
win
,
gximage
->
gc
,
x
,
y
,
w
,
h
,
GDK_RGB_DITHER_MAX
,
/* todo: make configurable */
gximage
->
data
,
GXIMAGE_WIDTH
*
3
);
}
app/gui/color-select.c
View file @
65ae5245
...
...
@@ -206,6 +206,7 @@ color_select_new (int r,
gtk_widget_show
(
xy_frame
);
csp
->
xy_color
=
gtk_preview_new
(
GTK_PREVIEW_COLOR
);
gtk_preview_set_dither
(
GTK_PREVIEW
(
csp
->
xy_color
),
GDK_RGB_DITHER_MAX
);
gtk_preview_size
(
GTK_PREVIEW
(
csp
->
xy_color
),
XY_DEF_WIDTH
,
XY_DEF_HEIGHT
);
gtk_widget_set_events
(
csp
->
xy_color
,
COLOR_AREA_MASK
);
gtk_signal_connect_after
(
GTK_OBJECT
(
csp
->
xy_color
),
"expose_event"
,
...
...
@@ -223,6 +224,7 @@ color_select_new (int r,
gtk_widget_show
(
z_frame
);
csp
->
z_color
=
gtk_preview_new
(
GTK_PREVIEW_COLOR
);
gtk_preview_set_dither
(
GTK_PREVIEW
(
csp
->
z_color
),
GDK_RGB_DITHER_MAX
);
gtk_preview_size
(
GTK_PREVIEW
(
csp
->
z_color
),
Z_DEF_WIDTH
,
Z_DEF_HEIGHT
);
gtk_widget_set_events
(
csp
->
z_color
,
COLOR_AREA_MASK
);
gtk_signal_connect_after
(
GTK_OBJECT
(
csp
->
z_color
),
"expose_event"
,
...
...
app/gui/info-window.c
View file @
65ae5245
...
...
@@ -57,6 +57,8 @@ static void
get_shades
(
GDisplay
*
gdisp
,
char
*
buf
)
{
sprintf
(
buf
,
"Using GdkRgb - we'll get back to you"
);
#if 0
GtkPreviewInfo *info;
info = gtk_preview_get_info ();
...
...
@@ -91,6 +93,7 @@ get_shades (GDisplay *gdisp,
sprintf (buf, "%d", gdisp->gimage->num_cols);
break;
}
#endif
}
static
void
...
...
app/gximage.c
View file @
65ae5245
...
...
@@ -31,7 +31,7 @@ struct _GXImage
GdkVisual
*
visual
;
/* visual appropriate to our depth */
GdkGC
*
gc
;
/* graphics context */
GdkImage
*
image
;
/* private data */
guchar
*
data
;
};
...
...
@@ -52,7 +52,7 @@ create_gximage (GdkVisual *visual, int width, int height)
gximage
->
visual
=
visual
;
gximage
->
gc
=
NULL
;
gximage
->
image
=
gdk_image_new
(
GDK_IMAGE_FASTEST
,
visual
,
width
,
height
);
gximage
->
data
=
g_malloc
(
width
*
height
*
3
);
return
gximage
;
}
...
...
@@ -60,7 +60,7 @@ create_gximage (GdkVisual *visual, int width, int height)
static
void
delete_gximage
(
GXImage
*
gximage
)
{
g
dk_image_destroy
(
gximage
->
image
);
g
_free
(
gximage
->
data
);
if
(
gximage
->
gc
)
gdk_gc_destroy
(
gximage
->
gc
);
g_free
(
gximage
);
...
...
@@ -86,25 +86,25 @@ gximage_free ()
guchar
*
gximage_get_data
()
{
return
gximage
->
image
->
mem
;
return
gximage
->
data
;
}
int
gximage_get_bpp
()
{
return
gximage
->
image
->
bpp
;
return
3
;
}
int
gximage_get_bpl
()
{
return
gximage
->
image
->
bpl
;
return
3
*
GXIMAGE_WIDTH
;
}
int
gximage_get_byte_order
()
{
return
gximage
->
image
->
byte_order
;
return
GDK_MSB_FIRST
;
}
void
...
...
@@ -117,8 +117,13 @@ gximage_put (GdkWindow *win, int x, int y, int w, int h)
gdk_gc_set_exposures
(
gximage
->
gc
,
TRUE
);
}
gdk_draw_image
(
win
,
gximage
->
gc
,
gximage
->
image
,
0
,
0
,
x
,
y
,
w
,
h
);
/* sync the draw image to make sure it has been displayed before continuing */
gdk_flush
();
gdk_draw_rgb_image
(
win
,
gximage
->
gc
,
x
,
y
,
w
,
h
,
GDK_RGB_DITHER_MAX
,
/* todo: make configurable */
gximage
->
data
,
GXIMAGE_WIDTH
*
3
);
}
app/image_render.c
View file @
65ae5245
This diff is collapsed.
Click to expand it.
app/info_window.c
View file @
65ae5245
...
...
@@ -57,6 +57,8 @@ static void
get_shades
(
GDisplay
*
gdisp
,
char
*
buf
)
{
sprintf
(
buf
,
"Using GdkRgb - we'll get back to you"
);
#if 0
GtkPreviewInfo *info;
info = gtk_preview_get_info ();
...
...
@@ -91,6 +93,7 @@ get_shades (GDisplay *gdisp,
sprintf (buf, "%d", gdisp->gimage->num_cols);
break;
}
#endif
}
static
void
...
...
libgimpwidgets/gimpcolorselect.c
View file @
65ae5245
...
...
@@ -206,6 +206,7 @@ color_select_new (int r,
gtk_widget_show
(
xy_frame
);
csp
->
xy_color
=
gtk_preview_new
(
GTK_PREVIEW_COLOR
);
gtk_preview_set_dither
(
GTK_PREVIEW
(
csp
->
xy_color
),
GDK_RGB_DITHER_MAX
);
gtk_preview_size
(
GTK_PREVIEW
(
csp
->
xy_color
),
XY_DEF_WIDTH
,
XY_DEF_HEIGHT
);
gtk_widget_set_events
(
csp
->
xy_color
,
COLOR_AREA_MASK
);
gtk_signal_connect_after
(
GTK_OBJECT
(
csp
->
xy_color
),
"expose_event"
,
...
...
@@ -223,6 +224,7 @@ color_select_new (int r,
gtk_widget_show
(
z_frame
);
csp
->
z_color
=
gtk_preview_new
(
GTK_PREVIEW_COLOR
);
gtk_preview_set_dither
(
GTK_PREVIEW
(
csp
->
z_color
),
GDK_RGB_DITHER_MAX
);
gtk_preview_size
(
GTK_PREVIEW
(
csp
->
z_color
),
Z_DEF_WIDTH
,
Z_DEF_HEIGHT
);
gtk_widget_set_events
(
csp
->
z_color
,
COLOR_AREA_MASK
);
gtk_signal_connect_after
(
GTK_OBJECT
(
csp
->
z_color
),
"expose_event"
,
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment