mirror of https://github.com/GNOME/gimp.git
plug-ins: port lightning to libgimp objects
This commit is contained in:
parent
add31e2976
commit
71f767efc0
|
@ -48,10 +48,9 @@ lighting_SOURCES = \
|
|||
images/lighting-icon-images.h
|
||||
|
||||
AM_CPPFLAGS = \
|
||||
-DGIMP_DEPRECATED_REPLACE_NEW_API \
|
||||
-I$(top_srcdir) \
|
||||
$(GTK_CFLAGS) \
|
||||
$(GEGL_CFLAGS) \
|
||||
$(GEGL_CFLAGS) \
|
||||
-I$(includedir)
|
||||
|
||||
LDADD = \
|
||||
|
|
|
@ -27,8 +27,8 @@ compute_image (void)
|
|||
GimpRGB color;
|
||||
glong progress_counter = 0;
|
||||
GimpVector3 p;
|
||||
gint32 new_image_id = -1;
|
||||
gint32 new_layer_id = -1;
|
||||
GimpImage *new_image = NULL;
|
||||
GimpLayer *new_layer = NULL;
|
||||
gint32 index;
|
||||
guchar *row = NULL;
|
||||
guchar obpp;
|
||||
|
@ -37,43 +37,43 @@ compute_image (void)
|
|||
|
||||
if (mapvals.create_new_image == TRUE ||
|
||||
(mapvals.transparent_background == TRUE &&
|
||||
! gimp_drawable_has_alpha (input_drawable_id)))
|
||||
! gimp_drawable_has_alpha (input_drawable)))
|
||||
{
|
||||
/* Create a new image */
|
||||
/* ================== */
|
||||
|
||||
new_image_id = gimp_image_new (width, height, GIMP_RGB);
|
||||
new_image = gimp_image_new (width, height, GIMP_RGB);
|
||||
|
||||
if (mapvals.transparent_background == TRUE)
|
||||
{
|
||||
/* Add a layer with an alpha channel */
|
||||
/* ================================= */
|
||||
|
||||
new_layer_id = gimp_layer_new (new_image_id, "Background",
|
||||
width, height,
|
||||
GIMP_RGBA_IMAGE,
|
||||
100.0,
|
||||
gimp_image_get_default_new_layer_mode (new_image_id));
|
||||
new_layer = gimp_layer_new (new_image, "Background",
|
||||
width, height,
|
||||
GIMP_RGBA_IMAGE,
|
||||
100.0,
|
||||
gimp_image_get_default_new_layer_mode (new_image));
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Create a "normal" layer */
|
||||
/* ======================= */
|
||||
|
||||
new_layer_id = gimp_layer_new (new_image_id, "Background",
|
||||
width, height,
|
||||
GIMP_RGB_IMAGE,
|
||||
100.0,
|
||||
gimp_image_get_default_new_layer_mode (new_image_id));
|
||||
new_layer = gimp_layer_new (new_image, "Background",
|
||||
width, height,
|
||||
GIMP_RGB_IMAGE,
|
||||
100.0,
|
||||
gimp_image_get_default_new_layer_mode (new_image));
|
||||
}
|
||||
|
||||
gimp_image_insert_layer (new_image_id, new_layer_id, -1, 0);
|
||||
output_drawable_id = new_layer_id;
|
||||
gimp_image_insert_layer (new_image, new_layer, NULL, 0);
|
||||
output_drawable = GIMP_DRAWABLE (new_layer);
|
||||
}
|
||||
|
||||
if (mapvals.bump_mapped == TRUE && mapvals.bumpmap_id != -1)
|
||||
{
|
||||
bumpmap_setup (mapvals.bumpmap_id);
|
||||
bumpmap_setup (GIMP_DRAWABLE (gimp_item_get_by_id (mapvals.bumpmap_id)));
|
||||
}
|
||||
|
||||
precompute_init (width, height);
|
||||
|
@ -84,17 +84,17 @@ compute_image (void)
|
|||
}
|
||||
else
|
||||
{
|
||||
envmap_setup (mapvals.envmap_id);
|
||||
envmap_setup (GIMP_DRAWABLE (gimp_item_get_by_id (mapvals.envmap_id)));
|
||||
|
||||
ray_func = get_ray_color_ref;
|
||||
}
|
||||
|
||||
dest_buffer = gimp_drawable_get_shadow_buffer (output_drawable_id);
|
||||
dest_buffer = gimp_drawable_get_shadow_buffer (output_drawable);
|
||||
|
||||
has_alpha = gimp_drawable_has_alpha (output_drawable_id);
|
||||
has_alpha = gimp_drawable_has_alpha (output_drawable);
|
||||
|
||||
/* FIXME */
|
||||
obpp = has_alpha ? 4 : 3; //gimp_drawable_bpp (output_drawable_id);
|
||||
obpp = has_alpha ? 4 : 3; //gimp_drawable_bpp (output_drawable);
|
||||
|
||||
row = g_new (guchar, obpp * width);
|
||||
|
||||
|
@ -142,13 +142,12 @@ compute_image (void)
|
|||
|
||||
g_object_unref (dest_buffer);
|
||||
|
||||
gimp_drawable_merge_shadow (output_drawable_id, TRUE);
|
||||
gimp_drawable_update (output_drawable_id, 0, 0, width, height);
|
||||
gimp_drawable_merge_shadow (output_drawable, TRUE);
|
||||
gimp_drawable_update (output_drawable, 0, 0, width, height);
|
||||
|
||||
if (new_image_id!=-1)
|
||||
if (new_image)
|
||||
{
|
||||
gimp_display_new (new_image_id);
|
||||
gimp_display_new (new_image);
|
||||
gimp_displays_flush ();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -14,17 +14,17 @@
|
|||
#include "lighting-ui.h"
|
||||
|
||||
|
||||
gint32 input_drawable_id;
|
||||
gint32 output_drawable_id;
|
||||
GeglBuffer *source_buffer;
|
||||
GeglBuffer *dest_buffer;
|
||||
GimpDrawable *input_drawable;
|
||||
GimpDrawable *output_drawable;
|
||||
GeglBuffer *source_buffer;
|
||||
GeglBuffer *dest_buffer;
|
||||
|
||||
gint32 bump_drawable_id;
|
||||
GeglBuffer *bump_buffer;
|
||||
const Babl *bump_format;
|
||||
GimpDrawable *bump_drawable;
|
||||
GeglBuffer *bump_buffer;
|
||||
const Babl *bump_format;
|
||||
|
||||
gint32 env_drawable_id;
|
||||
GeglBuffer *env_buffer;
|
||||
GimpDrawable *env_drawable;
|
||||
GeglBuffer *env_buffer;
|
||||
|
||||
guchar *preview_rgb_data = NULL;
|
||||
gint preview_rgb_stride;
|
||||
|
@ -335,8 +335,8 @@ compute_maps (void)
|
|||
/****************************************/
|
||||
|
||||
gint
|
||||
image_setup (gint32 drawable_id,
|
||||
gint interactive)
|
||||
image_setup (GimpDrawable *drawable,
|
||||
gint interactive)
|
||||
{
|
||||
gint w, h;
|
||||
gboolean ret;
|
||||
|
@ -346,10 +346,10 @@ image_setup (gint32 drawable_id,
|
|||
/* Get some useful info on the input drawable */
|
||||
/* ========================================== */
|
||||
|
||||
input_drawable_id = drawable_id;
|
||||
output_drawable_id = drawable_id;
|
||||
input_drawable = drawable;
|
||||
output_drawable = drawable;
|
||||
|
||||
ret = gimp_drawable_mask_intersect (drawable_id,
|
||||
ret = gimp_drawable_mask_intersect (drawable,
|
||||
&border_x1, &border_y1, &w, &h);
|
||||
|
||||
border_x2 = border_x1 + w;
|
||||
|
@ -358,10 +358,10 @@ image_setup (gint32 drawable_id,
|
|||
if (! ret)
|
||||
return FALSE;
|
||||
|
||||
width = gimp_drawable_width (input_drawable_id);
|
||||
height = gimp_drawable_height (input_drawable_id);
|
||||
width = gimp_drawable_width (input_drawable);
|
||||
height = gimp_drawable_height (input_drawable);
|
||||
|
||||
source_buffer = gimp_drawable_get_buffer (input_drawable_id);
|
||||
source_buffer = gimp_drawable_get_buffer (input_drawable);
|
||||
|
||||
maxcounter = (glong) width * (glong) height;
|
||||
|
||||
|
@ -381,13 +381,13 @@ image_setup (gint32 drawable_id,
|
|||
}
|
||||
|
||||
void
|
||||
bumpmap_setup (gint32 bumpmap_id)
|
||||
bumpmap_setup (GimpDrawable *bumpmap)
|
||||
{
|
||||
if (bumpmap_id != -1 && ! bump_buffer)
|
||||
if (bumpmap && ! bump_buffer)
|
||||
{
|
||||
bump_buffer = gimp_drawable_get_buffer (bumpmap_id);
|
||||
bump_buffer = gimp_drawable_get_buffer (bumpmap);
|
||||
|
||||
if (gimp_drawable_is_rgb (bumpmap_id))
|
||||
if (gimp_drawable_is_rgb (bumpmap))
|
||||
bump_format = babl_format ("R'G'B' u8");
|
||||
else
|
||||
bump_format = babl_format ("Y' u8"); /* FIXME */
|
||||
|
@ -395,13 +395,13 @@ bumpmap_setup (gint32 bumpmap_id)
|
|||
}
|
||||
|
||||
void
|
||||
envmap_setup (gint32 envmap_id)
|
||||
envmap_setup (GimpDrawable *envmap)
|
||||
{
|
||||
if (envmap_id != -1 && ! env_buffer)
|
||||
if (envmap && ! env_buffer)
|
||||
{
|
||||
env_width = gimp_drawable_width (envmap_id);
|
||||
env_height = gimp_drawable_height (envmap_id);
|
||||
env_width = gimp_drawable_width (envmap);
|
||||
env_height = gimp_drawable_height (envmap);
|
||||
|
||||
env_buffer = gimp_drawable_get_buffer (envmap_id);
|
||||
env_buffer = gimp_drawable_get_buffer (envmap);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -4,17 +4,18 @@
|
|||
#include <libgimp/gimp.h>
|
||||
#include <libgimp/gimpui.h>
|
||||
|
||||
extern gint32 input_drawable_id;
|
||||
extern gint32 output_drawable_id;
|
||||
extern GeglBuffer *source_buffer;
|
||||
extern GeglBuffer *dest_buffer;
|
||||
|
||||
extern gint32 bump_drawable_id;
|
||||
extern GeglBuffer *bump_buffer;
|
||||
extern const Babl *bump_format;
|
||||
extern GimpDrawable *input_drawable;
|
||||
extern GimpDrawable *output_drawable;
|
||||
extern GeglBuffer *source_buffer;
|
||||
extern GeglBuffer *dest_buffer;
|
||||
|
||||
extern gint32 env_drawable_id;
|
||||
extern GeglBuffer *env_buffer;
|
||||
extern GimpDrawable *bump_drawable;
|
||||
extern GeglBuffer *bump_buffer;
|
||||
extern const Babl *bump_format;
|
||||
|
||||
extern GimpDrawable *env_drawable;
|
||||
extern GeglBuffer *env_buffer;
|
||||
|
||||
extern guchar *preview_rgb_data;
|
||||
extern gint preview_rgb_stride;
|
||||
|
@ -28,6 +29,7 @@ extern gint border_x1, border_y1, border_x2, border_y2;
|
|||
|
||||
extern guchar sinemap[256], spheremap[256], logmap[256];
|
||||
|
||||
|
||||
guchar peek_map (GeglBuffer *buffer,
|
||||
const Babl *format,
|
||||
gint x,
|
||||
|
@ -61,9 +63,10 @@ gdouble get_map_value (GeglBuffer *buffer,
|
|||
gdouble u,
|
||||
gdouble v,
|
||||
gint *inside);
|
||||
gint image_setup (gint32 drawable_id,
|
||||
gint image_setup (GimpDrawable *drawable,
|
||||
gint interactive);
|
||||
void bumpmap_setup (gint32 bumpmap_id);
|
||||
void envmap_setup (gint32 envmap_id);
|
||||
void bumpmap_setup (GimpDrawable *bumpmap);
|
||||
void envmap_setup (GimpDrawable *envmap);
|
||||
|
||||
|
||||
#endif /* __LIGHTING_IMAGE_H__ */
|
||||
|
|
|
@ -118,40 +118,48 @@ set_default_settings (void)
|
|||
static void
|
||||
check_drawables (void)
|
||||
{
|
||||
GimpDrawable *drawable;
|
||||
GimpDrawable *map;
|
||||
|
||||
if (mapvals.bump_mapped)
|
||||
{
|
||||
if (mapvals.bumpmap_id != -1 &&
|
||||
gimp_item_get_image (mapvals.bumpmap_id) == -1)
|
||||
if (! gimp_item_id_is_drawable (mapvals.bumpmap_id))
|
||||
{
|
||||
mapvals.bump_mapped = FALSE;
|
||||
mapvals.bumpmap_id = -1;
|
||||
}
|
||||
|
||||
if (gimp_drawable_is_indexed (mapvals.bumpmap_id) ||
|
||||
(gimp_drawable_width (mapvals.drawable_id) !=
|
||||
gimp_drawable_width (mapvals.bumpmap_id)) ||
|
||||
(gimp_drawable_height (mapvals.drawable_id) !=
|
||||
gimp_drawable_height (mapvals.bumpmap_id)))
|
||||
else
|
||||
{
|
||||
mapvals.bump_mapped = FALSE;
|
||||
mapvals.bumpmap_id = -1;
|
||||
drawable = GIMP_DRAWABLE (gimp_item_get_by_id (mapvals.drawable_id));
|
||||
map = GIMP_DRAWABLE (gimp_item_get_by_id (mapvals.bumpmap_id));
|
||||
|
||||
if (gimp_drawable_is_indexed (map) ||
|
||||
(gimp_drawable_width (drawable) != gimp_drawable_width (map)) ||
|
||||
(gimp_drawable_height (drawable) != gimp_drawable_height (map)))
|
||||
{
|
||||
mapvals.bump_mapped = FALSE;
|
||||
mapvals.bumpmap_id = -1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (mapvals.env_mapped)
|
||||
{
|
||||
if (mapvals.envmap_id != -1 &&
|
||||
gimp_item_get_image (mapvals.envmap_id) == -1)
|
||||
if (! gimp_item_id_is_drawable (mapvals.envmap_id))
|
||||
{
|
||||
mapvals.env_mapped = FALSE;
|
||||
mapvals.envmap_id = -1;
|
||||
}
|
||||
|
||||
if (gimp_drawable_is_gray (mapvals.envmap_id) ||
|
||||
gimp_drawable_has_alpha (mapvals.envmap_id))
|
||||
else
|
||||
{
|
||||
mapvals.env_mapped = FALSE;
|
||||
mapvals.envmap_id = -1;
|
||||
map = GIMP_DRAWABLE (gimp_item_get_by_id (mapvals.envmap_id));
|
||||
|
||||
if (gimp_drawable_is_gray (map) ||
|
||||
gimp_drawable_has_alpha (map))
|
||||
{
|
||||
mapvals.env_mapped = FALSE;
|
||||
mapvals.envmap_id = -1;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -195,7 +203,7 @@ query (void)
|
|||
"Version 0.2.0, March 15 1998",
|
||||
N_("_Lighting Effects..."),
|
||||
"RGB*",
|
||||
GIMP_PLUGIN,
|
||||
GIMP_PDB_PROC_TYPE_PLUGIN,
|
||||
G_N_ELEMENTS (args), 0,
|
||||
args, NULL);
|
||||
|
||||
|
@ -212,7 +220,7 @@ run (const gchar *name,
|
|||
{
|
||||
static GimpParam values[1];
|
||||
GimpRunMode run_mode;
|
||||
gint32 drawable_id;
|
||||
GimpDrawable *drawable;
|
||||
GimpPDBStatusType status = GIMP_PDB_SUCCESS;
|
||||
|
||||
INIT_I18N ();
|
||||
|
@ -237,10 +245,10 @@ run (const gchar *name,
|
|||
/* Get the specified drawable */
|
||||
/* ========================== */
|
||||
|
||||
run_mode = param[0].data.d_int32;
|
||||
drawable_id = param[2].data.d_drawable;
|
||||
run_mode = param[0].data.d_int32;
|
||||
drawable = GIMP_DRAWABLE (gimp_item_get_by_id (param[2].data.d_drawable));
|
||||
|
||||
mapvals.drawable_id = drawable_id;
|
||||
mapvals.drawable_id = gimp_item_get_id (GIMP_ITEM (drawable));
|
||||
|
||||
check_drawables ();
|
||||
|
||||
|
@ -249,12 +257,12 @@ run (const gchar *name,
|
|||
/* Make sure that the drawable is RGBA or RGB color */
|
||||
/* ================================================ */
|
||||
|
||||
if (gimp_drawable_is_rgb (drawable_id))
|
||||
if (gimp_drawable_is_rgb (drawable))
|
||||
{
|
||||
switch (run_mode)
|
||||
{
|
||||
case GIMP_RUN_INTERACTIVE:
|
||||
if (main_dialog (drawable_id))
|
||||
if (main_dialog (drawable))
|
||||
{
|
||||
compute_image ();
|
||||
|
||||
|
@ -265,7 +273,7 @@ run (const gchar *name,
|
|||
break;
|
||||
|
||||
case GIMP_RUN_WITH_LAST_VALS:
|
||||
if (image_setup (drawable_id, FALSE))
|
||||
if (image_setup (drawable, FALSE))
|
||||
compute_image ();
|
||||
gimp_displays_flush ();
|
||||
break;
|
||||
|
@ -300,7 +308,7 @@ run (const gchar *name,
|
|||
mapvals.transparent_background = (gint) param[23].data.d_int32;
|
||||
|
||||
check_drawables ();
|
||||
if (image_setup (drawable_id, FALSE))
|
||||
if (image_setup (drawable, FALSE))
|
||||
compute_image ();
|
||||
}
|
||||
default:
|
||||
|
|
|
@ -96,7 +96,7 @@ compute_preview (gint startx, gint starty, gint w, gint h)
|
|||
|
||||
if (mapvals.bump_mapped == TRUE && mapvals.bumpmap_id != -1)
|
||||
{
|
||||
bumpmap_setup (mapvals.bumpmap_id);
|
||||
bumpmap_setup (GIMP_DRAWABLE (gimp_item_get_by_id (mapvals.bumpmap_id)));
|
||||
}
|
||||
|
||||
imagey = 0;
|
||||
|
@ -108,7 +108,7 @@ compute_preview (gint startx, gint starty, gint w, gint h)
|
|||
|
||||
if (mapvals.env_mapped == TRUE && mapvals.envmap_id != -1)
|
||||
{
|
||||
envmap_setup (mapvals.envmap_id);
|
||||
envmap_setup (GIMP_DRAWABLE (gimp_item_get_by_id (mapvals.envmap_id)));
|
||||
|
||||
if (mapvals.previewquality)
|
||||
ray_func = get_ray_color_ref;
|
||||
|
|
|
@ -140,7 +140,10 @@ precompute_init (gint w,
|
|||
|
||||
if (mapvals.bumpmap_id != -1)
|
||||
{
|
||||
bpp = gimp_drawable_bpp(mapvals.bumpmap_id);
|
||||
GimpDrawable *drawable =
|
||||
GIMP_DRAWABLE (gimp_item_get_by_id (mapvals.bumpmap_id));
|
||||
|
||||
bpp = gimp_drawable_bpp (drawable);
|
||||
}
|
||||
|
||||
bumprow = g_new (guchar, w * bpp);
|
||||
|
@ -183,7 +186,7 @@ interpol_row (gint x1,
|
|||
|
||||
if (mapvals.bumpmap_id != -1)
|
||||
{
|
||||
bumpmap_setup (mapvals.bumpmap_id);
|
||||
bumpmap_setup (GIMP_DRAWABLE (gimp_item_get_by_id (mapvals.bumpmap_id)));
|
||||
|
||||
bpp = babl_format_get_bytes_per_pixel (bump_format);
|
||||
}
|
||||
|
@ -221,7 +224,7 @@ interpol_row (gint x1,
|
|||
guchar mapval;
|
||||
guchar mapval1, mapval2;
|
||||
|
||||
if (bpp>1)
|
||||
if (bpp > 1)
|
||||
{
|
||||
mapval1 = (guchar)((float)((bumprow1[n * bpp] +bumprow1[n * bpp +1] + bumprow1[n * bpp + 2])/3.0 )) ;
|
||||
mapval2 = (guchar)((float)((bumprow2[n * bpp] +bumprow2[n * bpp +1] + bumprow2[n * bpp + 2])/3.0 )) ;
|
||||
|
@ -313,7 +316,7 @@ precompute_normals (gint x1,
|
|||
|
||||
if (mapvals.bumpmap_id != -1)
|
||||
{
|
||||
bumpmap_setup (mapvals.bumpmap_id);
|
||||
bumpmap_setup (GIMP_DRAWABLE (gimp_item_get_by_id (mapvals.bumpmap_id)));
|
||||
|
||||
bpp = babl_format_get_bytes_per_pixel (bump_format);
|
||||
}
|
||||
|
@ -326,15 +329,15 @@ precompute_normals (gint x1,
|
|||
{
|
||||
switch (mapvals.bumpmaptype)
|
||||
{
|
||||
case 1:
|
||||
map = logmap;
|
||||
break;
|
||||
case 2:
|
||||
map = sinemap;
|
||||
break;
|
||||
default:
|
||||
map = spheremap;
|
||||
break;
|
||||
case 1:
|
||||
map = logmap;
|
||||
break;
|
||||
case 2:
|
||||
map = sinemap;
|
||||
break;
|
||||
default:
|
||||
map = spheremap;
|
||||
break;
|
||||
}
|
||||
|
||||
for (n = 0; n < (x2 - x1); n++)
|
||||
|
@ -357,7 +360,7 @@ precompute_normals (gint x1,
|
|||
{
|
||||
for (n = 0; n < (x2 - x1); n++)
|
||||
{
|
||||
if (bpp>1)
|
||||
if (bpp > 1)
|
||||
{
|
||||
mapval = (guchar)((float)((bumprow[n * bpp + 0] +
|
||||
bumprow[n * bpp + 1] +
|
||||
|
@ -425,7 +428,7 @@ precompute_normals (gint x1,
|
|||
}
|
||||
}
|
||||
|
||||
if (n <pre_w)
|
||||
if (n < pre_w)
|
||||
{
|
||||
if (y > 0)
|
||||
{
|
||||
|
@ -490,7 +493,7 @@ sphere_to_image (GimpVector3 *normal,
|
|||
|
||||
*v = alpha / G_PI;
|
||||
|
||||
if (*v==0.0 || *v==1.0)
|
||||
if (*v == 0.0 || *v == 1.0)
|
||||
{
|
||||
*u = 0.0;
|
||||
}
|
||||
|
@ -501,9 +504,9 @@ sphere_to_image (GimpVector3 *normal,
|
|||
/* Make sure that we map to -1.0..1.0 (take care of rounding errors) */
|
||||
/* ================================================================= */
|
||||
|
||||
if (fac>1.0)
|
||||
if (fac > 1.0)
|
||||
fac = 1.0;
|
||||
else if (fac<-1.0)
|
||||
else if (fac < -1.0)
|
||||
fac = -1.0;
|
||||
|
||||
*u = acos (fac) / (2.0 * G_PI);
|
||||
|
@ -548,8 +551,8 @@ get_ray_color (GimpVector3 *position)
|
|||
|
||||
for (k = 0; k < NUM_LIGHTS; k++)
|
||||
{
|
||||
if (!mapvals.lightsource[k].active
|
||||
|| mapvals.lightsource[k].type == NO_LIGHT)
|
||||
if (! mapvals.lightsource[k].active ||
|
||||
mapvals.lightsource[k].type == NO_LIGHT)
|
||||
continue;
|
||||
else if (mapvals.lightsource[k].type == POINT_LIGHT)
|
||||
p = &mapvals.lightsource[k].position;
|
||||
|
@ -559,7 +562,8 @@ get_ray_color (GimpVector3 *position)
|
|||
color_int = mapvals.lightsource[k].color;
|
||||
gimp_rgb_multiply (&color_int, mapvals.lightsource[k].intensity);
|
||||
|
||||
if (mapvals.bump_mapped == FALSE || mapvals.bumpmap_id == -1)
|
||||
if (mapvals.bump_mapped == FALSE ||
|
||||
mapvals.bumpmap_id == -1)
|
||||
{
|
||||
light_color = phong_shade (position,
|
||||
&mapvals.viewpoint,
|
||||
|
@ -587,6 +591,7 @@ get_ray_color (GimpVector3 *position)
|
|||
}
|
||||
|
||||
gimp_rgb_clamp (&color_sum);
|
||||
|
||||
return color_sum;
|
||||
}
|
||||
|
||||
|
@ -607,10 +612,16 @@ get_ray_color_ref (GimpVector3 *position)
|
|||
|
||||
x = RINT (xf);
|
||||
|
||||
if (mapvals.bump_mapped == FALSE || mapvals.bumpmap_id == -1)
|
||||
normal = mapvals.planenormal;
|
||||
if (mapvals.bump_mapped == FALSE ||
|
||||
mapvals.bumpmap_id == -1)
|
||||
{
|
||||
normal = mapvals.planenormal;
|
||||
}
|
||||
else
|
||||
normal = vertex_normals[1][(gint) RINT (xf)];
|
||||
{
|
||||
normal = vertex_normals[1][(gint) RINT (xf)];
|
||||
}
|
||||
|
||||
gimp_vector3_normalize (&normal);
|
||||
|
||||
if (mapvals.transparent_background && heights[1][x] == 0)
|
||||
|
@ -627,8 +638,8 @@ get_ray_color_ref (GimpVector3 *position)
|
|||
{
|
||||
p = &mapvals.lightsource[k].direction;
|
||||
|
||||
if (!mapvals.lightsource[k].active
|
||||
|| mapvals.lightsource[k].type == NO_LIGHT)
|
||||
if (! mapvals.lightsource[k].active ||
|
||||
mapvals.lightsource[k].type == NO_LIGHT)
|
||||
continue;
|
||||
else if (mapvals.lightsource[k].type == POINT_LIGHT)
|
||||
p = &mapvals.lightsource[k].position;
|
||||
|
@ -674,6 +685,7 @@ get_ray_color_ref (GimpVector3 *position)
|
|||
}
|
||||
|
||||
gimp_rgb_clamp (&color_sum);
|
||||
|
||||
return color_sum;
|
||||
}
|
||||
|
||||
|
@ -689,7 +701,6 @@ get_ray_color_no_bilinear (GimpVector3 *position)
|
|||
GimpVector3 normal, *p;
|
||||
gint k;
|
||||
|
||||
|
||||
pos_to_float (position->x, position->y, &xf, &yf);
|
||||
|
||||
x = RINT (xf);
|
||||
|
@ -709,8 +720,8 @@ get_ray_color_no_bilinear (GimpVector3 *position)
|
|||
{
|
||||
p = &mapvals.lightsource[k].direction;
|
||||
|
||||
if (!mapvals.lightsource[k].active
|
||||
|| mapvals.lightsource[k].type == NO_LIGHT)
|
||||
if (! mapvals.lightsource[k].active ||
|
||||
mapvals.lightsource[k].type == NO_LIGHT)
|
||||
continue;
|
||||
else if (mapvals.lightsource[k].type == POINT_LIGHT)
|
||||
p = &mapvals.lightsource[k].position;
|
||||
|
@ -718,7 +729,8 @@ get_ray_color_no_bilinear (GimpVector3 *position)
|
|||
color_int = mapvals.lightsource[k].color;
|
||||
gimp_rgb_multiply (&color_int, mapvals.lightsource[k].intensity);
|
||||
|
||||
if (mapvals.bump_mapped == FALSE || mapvals.bumpmap_id == -1)
|
||||
if (mapvals.bump_mapped == FALSE ||
|
||||
mapvals.bumpmap_id == -1)
|
||||
{
|
||||
light_color = phong_shade (position,
|
||||
&mapvals.viewpoint,
|
||||
|
@ -746,6 +758,7 @@ get_ray_color_no_bilinear (GimpVector3 *position)
|
|||
}
|
||||
|
||||
gimp_rgb_clamp (&color_sum);
|
||||
|
||||
return color_sum;
|
||||
}
|
||||
|
||||
|
@ -766,10 +779,16 @@ get_ray_color_no_bilinear_ref (GimpVector3 *position)
|
|||
|
||||
x = RINT (xf);
|
||||
|
||||
if (mapvals.bump_mapped == FALSE || mapvals.bumpmap_id == -1)
|
||||
normal = mapvals.planenormal;
|
||||
if (mapvals.bump_mapped == FALSE ||
|
||||
mapvals.bumpmap_id == -1)
|
||||
{
|
||||
normal = mapvals.planenormal;
|
||||
}
|
||||
else
|
||||
normal = vertex_normals[1][(gint) RINT (xf)];
|
||||
{
|
||||
normal = vertex_normals[1][(gint) RINT (xf)];
|
||||
}
|
||||
|
||||
gimp_vector3_normalize (&normal);
|
||||
|
||||
if (mapvals.transparent_background && heights[1][x] == 0)
|
||||
|
|
|
@ -65,11 +65,11 @@ static void toggle_update (GtkWidget *widget,
|
|||
static void distance_update (GtkAdjustment *adj,
|
||||
gpointer data);
|
||||
|
||||
static gboolean bumpmap_constrain (gint32 image_id,
|
||||
gint32 drawable_id,
|
||||
static gboolean bumpmap_constrain (GimpImage *image,
|
||||
GimpItem *item,
|
||||
gpointer data);
|
||||
static gboolean envmap_constrain (gint32 image_id,
|
||||
gint32 drawable_id,
|
||||
static gboolean envmap_constrain (GimpImage *image,
|
||||
GimpItem *item,
|
||||
gpointer data);
|
||||
static void envmap_combo_callback (GtkWidget *widget,
|
||||
gpointer data);
|
||||
|
@ -254,34 +254,40 @@ zoomin_callback (GtkWidget *widget)
|
|||
/**********************************************/
|
||||
|
||||
static gint
|
||||
bumpmap_constrain (gint32 image_id,
|
||||
gint32 drawable_id,
|
||||
gpointer data)
|
||||
bumpmap_constrain (GimpImage *image,
|
||||
GimpItem *item,
|
||||
gpointer data)
|
||||
{
|
||||
return ((gimp_drawable_width (drawable_id) ==
|
||||
gimp_drawable_width (mapvals.drawable_id)) &&
|
||||
(gimp_drawable_height (drawable_id) ==
|
||||
gimp_drawable_height (mapvals.drawable_id)));
|
||||
GimpDrawable *dr = GIMP_DRAWABLE (gimp_item_get_by_id (mapvals.drawable_id));
|
||||
|
||||
return ((gimp_drawable_width (GIMP_DRAWABLE (item)) ==
|
||||
gimp_drawable_width (dr)) &&
|
||||
(gimp_drawable_height (GIMP_DRAWABLE (item)) ==
|
||||
gimp_drawable_height (dr)));
|
||||
}
|
||||
|
||||
static gint
|
||||
envmap_constrain (gint32 image_id,
|
||||
gint32 drawable_id,
|
||||
gpointer data)
|
||||
envmap_constrain (GimpImage *image,
|
||||
GimpItem *item,
|
||||
gpointer data)
|
||||
{
|
||||
return (!gimp_drawable_is_gray (drawable_id) &&
|
||||
!gimp_drawable_has_alpha (drawable_id));
|
||||
return (! gimp_drawable_is_gray (GIMP_DRAWABLE (item)) &&
|
||||
! gimp_drawable_has_alpha (GIMP_DRAWABLE (item)));
|
||||
}
|
||||
|
||||
static void
|
||||
envmap_combo_callback (GtkWidget *widget,
|
||||
gpointer data)
|
||||
{
|
||||
GimpDrawable *env;
|
||||
|
||||
gimp_int_combo_box_get_active (GIMP_INT_COMBO_BOX (widget),
|
||||
&mapvals.envmap_id);
|
||||
|
||||
env_width = gimp_drawable_width (mapvals.envmap_id);
|
||||
env_height = gimp_drawable_height (mapvals.envmap_id);
|
||||
env = GIMP_DRAWABLE (gimp_item_get_by_id (mapvals.envmap_id));
|
||||
|
||||
env_width = gimp_drawable_width (env);
|
||||
env_height = gimp_drawable_height (env);
|
||||
}
|
||||
|
||||
/***********************/
|
||||
|
@ -1005,7 +1011,7 @@ create_main_notebook (GtkWidget *container)
|
|||
/********************************/
|
||||
|
||||
gboolean
|
||||
main_dialog (gint32 drawable_id)
|
||||
main_dialog (GimpDrawable *drawable)
|
||||
{
|
||||
GtkWidget *main_hbox;
|
||||
GtkWidget *vbox;
|
||||
|
@ -1129,7 +1135,7 @@ main_dialog (gint32 drawable_id)
|
|||
g_object_unref (cursor);
|
||||
}
|
||||
|
||||
if (image_setup (drawable_id, TRUE))
|
||||
if (image_setup (drawable, TRUE))
|
||||
preview_compute ();
|
||||
|
||||
if (gimp_dialog_run (GIMP_DIALOG (appwin)) == GTK_RESPONSE_OK)
|
||||
|
|
|
@ -16,6 +16,6 @@ extern GtkWidget *spin_dir_z;
|
|||
/* Externally visible functions */
|
||||
/* ============================ */
|
||||
|
||||
gboolean main_dialog (gint32 drawable_id);
|
||||
gboolean main_dialog (GimpDrawable *drawable);
|
||||
|
||||
#endif /* __LIGHTING_UI_H__ */
|
||||
|
|
Loading…
Reference in New Issue