mirror of https://github.com/GNOME/gimp.git
plug-ins: tabs to spaces in map-object
This commit is contained in:
parent
0f1da6677c
commit
87750d993e
|
@ -96,7 +96,7 @@ ArcBall_Init (void)
|
||||||
|
|
||||||
void
|
void
|
||||||
ArcBall_Place (HVect Center,
|
ArcBall_Place (HVect Center,
|
||||||
double Radius)
|
double Radius)
|
||||||
{
|
{
|
||||||
center = Center;
|
center = Center;
|
||||||
radius = Radius;
|
radius = Radius;
|
||||||
|
@ -134,10 +134,10 @@ ArcBall_Update (void)
|
||||||
if (dragging)
|
if (dragging)
|
||||||
{
|
{
|
||||||
if (axisSet!=NoAxes)
|
if (axisSet!=NoAxes)
|
||||||
{
|
{
|
||||||
vFrom = ConstrainToAxis(vFrom, set[axisIndex]);
|
vFrom = ConstrainToAxis(vFrom, set[axisIndex]);
|
||||||
vTo = ConstrainToAxis(vTo, set[axisIndex]);
|
vTo = ConstrainToAxis(vTo, set[axisIndex]);
|
||||||
}
|
}
|
||||||
qDrag = Qt_FromBallPoints(vFrom, vTo);
|
qDrag = Qt_FromBallPoints(vFrom, vTo);
|
||||||
qNow = Qt_Mul(qDrag, qDown);
|
qNow = Qt_Mul(qDrag, qDown);
|
||||||
}
|
}
|
||||||
|
@ -163,8 +163,8 @@ ArcBall_Value (HMatrix m_Now)
|
||||||
|
|
||||||
void
|
void
|
||||||
ArcBall_Values (double *alpha,
|
ArcBall_Values (double *alpha,
|
||||||
double *beta,
|
double *beta,
|
||||||
double *gamma)
|
double *gamma)
|
||||||
{
|
{
|
||||||
if ((*beta=asin(-mNow[0][2]))!=0.0)
|
if ((*beta=asin(-mNow[0][2]))!=0.0)
|
||||||
{
|
{
|
||||||
|
@ -211,7 +211,7 @@ ArcBall_EndDrag (void)
|
||||||
|
|
||||||
static Quat
|
static Quat
|
||||||
Qt_Mul (Quat qL,
|
Qt_Mul (Quat qL,
|
||||||
Quat qR)
|
Quat qR)
|
||||||
{
|
{
|
||||||
Quat qq;
|
Quat qq;
|
||||||
qq.w = qL.w*qR.w - qL.x*qR.x - qL.y*qR.y - qL.z*qR.z;
|
qq.w = qL.w*qR.w - qL.x*qR.x - qL.y*qR.y - qL.z*qR.z;
|
||||||
|
@ -229,14 +229,14 @@ Qt_Mul (Quat qL,
|
||||||
|
|
||||||
static void
|
static void
|
||||||
Qt_ToMatrix (Quat q,
|
Qt_ToMatrix (Quat q,
|
||||||
HMatrix out)
|
HMatrix out)
|
||||||
{
|
{
|
||||||
double Nq = q.x*q.x + q.y*q.y + q.z*q.z + q.w*q.w;
|
double Nq = q.x*q.x + q.y*q.y + q.z*q.z + q.w*q.w;
|
||||||
double s = (Nq > 0.0) ? (2.0 / Nq) : 0.0;
|
double s = (Nq > 0.0) ? (2.0 / Nq) : 0.0;
|
||||||
double xs = q.x*s, ys = q.y*s, zs = q.z*s;
|
double xs = q.x*s, ys = q.y*s, zs = q.z*s;
|
||||||
double wx = q.w*xs, wy = q.w*ys, wz = q.w*zs;
|
double wx = q.w*xs, wy = q.w*ys, wz = q.w*zs;
|
||||||
double xx = q.x*xs, xy = q.x*ys, xz = q.x*zs;
|
double xx = q.x*xs, xy = q.x*ys, xz = q.x*zs;
|
||||||
double yy = q.y*ys, yz = q.y*zs, zz = q.z*zs;
|
double yy = q.y*ys, yz = q.y*zs, zz = q.z*zs;
|
||||||
out[X][X] = 1.0 - (yy + zz); out[Y][X] = xy + wz; out[Z][X] = xz - wy;
|
out[X][X] = 1.0 - (yy + zz); out[Y][X] = xy + wz; out[Z][X] = xz - wy;
|
||||||
out[X][Y] = xy - wz; out[Y][Y] = 1.0 - (xx + zz); out[Z][Y] = yz + wx;
|
out[X][Y] = xy - wz; out[Y][Y] = 1.0 - (xx + zz); out[Z][Y] = yz + wx;
|
||||||
out[X][Z] = xz + wy; out[Y][Z] = yz - wx; out[Z][Z] = 1.0 - (xx + yy);
|
out[X][Z] = xz + wy; out[Y][Z] = yz - wx; out[Z][Z] = 1.0 - (xx + yy);
|
||||||
|
@ -295,7 +295,7 @@ V3_Unit (HVect v)
|
||||||
|
|
||||||
static HVect
|
static HVect
|
||||||
V3_Scale (HVect v,
|
V3_Scale (HVect v,
|
||||||
double s)
|
double s)
|
||||||
{
|
{
|
||||||
HVect u;
|
HVect u;
|
||||||
u.x = s*v.x; u.y = s*v.y; u.z = s*v.z; u.w = v.w;
|
u.x = s*v.x; u.y = s*v.y; u.z = s*v.z; u.w = v.w;
|
||||||
|
@ -318,7 +318,7 @@ V3_Negate (HVect v)
|
||||||
/*
|
/*
|
||||||
static HVect
|
static HVect
|
||||||
V3_Add (HVect v1,
|
V3_Add (HVect v1,
|
||||||
HVect v2)
|
HVect v2)
|
||||||
{
|
{
|
||||||
static HVect v = {0, 0, 0, 0};
|
static HVect v = {0, 0, 0, 0};
|
||||||
v.x = v1.x+v2.x; v.y = v1.y+v2.y; v.z = v1.z+v2.z;
|
v.x = v1.x+v2.x; v.y = v1.y+v2.y; v.z = v1.z+v2.z;
|
||||||
|
@ -330,7 +330,7 @@ V3_Add (HVect v1,
|
||||||
|
|
||||||
static HVect
|
static HVect
|
||||||
V3_Sub (HVect v1,
|
V3_Sub (HVect v1,
|
||||||
HVect v2)
|
HVect v2)
|
||||||
{
|
{
|
||||||
static HVect v = {0, 0, 0, 0};
|
static HVect v = {0, 0, 0, 0};
|
||||||
v.x = v1.x-v2.x; v.y = v1.y-v2.y; v.z = v1.z-v2.z;
|
v.x = v1.x-v2.x; v.y = v1.y-v2.y; v.z = v1.z-v2.z;
|
||||||
|
@ -342,7 +342,7 @@ V3_Sub (HVect v1,
|
||||||
/*
|
/*
|
||||||
static HVect
|
static HVect
|
||||||
V3_Bisect (HVect v0,
|
V3_Bisect (HVect v0,
|
||||||
HVect v1)
|
HVect v1)
|
||||||
{
|
{
|
||||||
HVect v = {0, 0, 0, 0};
|
HVect v = {0, 0, 0, 0};
|
||||||
double Nv;
|
double Nv;
|
||||||
|
@ -360,7 +360,7 @@ V3_Bisect (HVect v0,
|
||||||
|
|
||||||
static double
|
static double
|
||||||
V3_Dot (HVect v1,
|
V3_Dot (HVect v1,
|
||||||
HVect v2)
|
HVect v2)
|
||||||
{
|
{
|
||||||
return (v1.x*v2.x + v1.y*v2.y + v1.z*v2.z);
|
return (v1.x*v2.x + v1.y*v2.y + v1.z*v2.z);
|
||||||
}
|
}
|
||||||
|
@ -371,7 +371,7 @@ V3_Dot (HVect v1,
|
||||||
/*
|
/*
|
||||||
static HVect
|
static HVect
|
||||||
V3_Cross (HVect v1,
|
V3_Cross (HVect v1,
|
||||||
HVect v2)
|
HVect v2)
|
||||||
{
|
{
|
||||||
static HVect v = {0, 0, 0, 0};
|
static HVect v = {0, 0, 0, 0};
|
||||||
v.x = v1.y*v2.z-v1.z*v2.y;
|
v.x = v1.y*v2.z-v1.z*v2.y;
|
||||||
|
@ -383,16 +383,16 @@ V3_Cross (HVect v1,
|
||||||
|
|
||||||
void
|
void
|
||||||
ArcBall_CopyMat (HMatrix inm,
|
ArcBall_CopyMat (HMatrix inm,
|
||||||
HMatrix outm)
|
HMatrix outm)
|
||||||
{
|
{
|
||||||
int x=0,y=0;
|
int x=0,y=0;
|
||||||
|
|
||||||
for (x=0;x<4;x++)
|
for (x=0;x<4;x++)
|
||||||
{
|
{
|
||||||
for (y=0;y<4;y++)
|
for (y=0;y<4;y++)
|
||||||
{
|
{
|
||||||
outm[y][x]=inm[y][x];
|
outm[y][x]=inm[y][x];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -405,8 +405,8 @@ ArcBall_CopyMat (HMatrix inm,
|
||||||
|
|
||||||
static HVect
|
static HVect
|
||||||
MouseOnSphere (HVect mouse,
|
MouseOnSphere (HVect mouse,
|
||||||
HVect ballCenter,
|
HVect ballCenter,
|
||||||
double ballRadius)
|
double ballRadius)
|
||||||
{
|
{
|
||||||
HVect ballMouse;
|
HVect ballMouse;
|
||||||
register double mag;
|
register double mag;
|
||||||
|
@ -430,7 +430,7 @@ MouseOnSphere (HVect mouse,
|
||||||
|
|
||||||
static Quat
|
static Quat
|
||||||
Qt_FromBallPoints (HVect from,
|
Qt_FromBallPoints (HVect from,
|
||||||
HVect to)
|
HVect to)
|
||||||
{
|
{
|
||||||
Quat qu;
|
Quat qu;
|
||||||
qu.x = from.y*to.z - from.z*to.y;
|
qu.x = from.y*to.z - from.z*to.y;
|
||||||
|
@ -445,8 +445,8 @@ Qt_FromBallPoints (HVect from,
|
||||||
|
|
||||||
static void
|
static void
|
||||||
Qt_ToBallPoints (Quat q,
|
Qt_ToBallPoints (Quat q,
|
||||||
HVect *arcFrom,
|
HVect *arcFrom,
|
||||||
HVect *arcTo)
|
HVect *arcTo)
|
||||||
{
|
{
|
||||||
double s;
|
double s;
|
||||||
|
|
||||||
|
@ -464,7 +464,7 @@ Qt_ToBallPoints (Quat q,
|
||||||
|
|
||||||
static HVect
|
static HVect
|
||||||
ConstrainToAxis (HVect loose,
|
ConstrainToAxis (HVect loose,
|
||||||
HVect axis)
|
HVect axis)
|
||||||
{
|
{
|
||||||
HVect onPlane;
|
HVect onPlane;
|
||||||
register double norm;
|
register double norm;
|
||||||
|
@ -489,8 +489,8 @@ ConstrainToAxis (HVect loose,
|
||||||
|
|
||||||
static int
|
static int
|
||||||
NearestConstraintAxis (HVect loose,
|
NearestConstraintAxis (HVect loose,
|
||||||
HVect *axes,
|
HVect *axes,
|
||||||
int nAxes)
|
int nAxes)
|
||||||
{
|
{
|
||||||
HVect onPlane;
|
HVect onPlane;
|
||||||
register double max, dot;
|
register double max, dot;
|
||||||
|
@ -502,9 +502,9 @@ NearestConstraintAxis (HVect loose,
|
||||||
onPlane = ConstrainToAxis(loose, axes[i]);
|
onPlane = ConstrainToAxis(loose, axes[i]);
|
||||||
dot = V3_Dot(onPlane, loose);
|
dot = V3_Dot(onPlane, loose);
|
||||||
if (dot>max)
|
if (dot>max)
|
||||||
{
|
{
|
||||||
max = dot; nearest = i;
|
max = dot; nearest = i;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return (nearest);
|
return (nearest);
|
||||||
}
|
}
|
||||||
|
|
|
@ -34,17 +34,17 @@ extern Quat qOne;
|
||||||
|
|
||||||
void ArcBall_Init (void);
|
void ArcBall_Init (void);
|
||||||
void ArcBall_Place (HVect Center,
|
void ArcBall_Place (HVect Center,
|
||||||
double Radius);
|
double Radius);
|
||||||
void ArcBall_UseSet (AxisSet axis_Set);
|
void ArcBall_UseSet (AxisSet axis_Set);
|
||||||
void ArcBall_Update (void);
|
void ArcBall_Update (void);
|
||||||
void ArcBall_Value (HMatrix m_Now);
|
void ArcBall_Value (HMatrix m_Now);
|
||||||
void ArcBall_Values (double *alpha,
|
void ArcBall_Values (double *alpha,
|
||||||
double *beta,
|
double *beta,
|
||||||
double *gamma);
|
double *gamma);
|
||||||
void ArcBall_BeginDrag (void);
|
void ArcBall_BeginDrag (void);
|
||||||
void ArcBall_EndDrag (void);
|
void ArcBall_EndDrag (void);
|
||||||
void ArcBall_Mouse (HVect v_Now);
|
void ArcBall_Mouse (HVect v_Now);
|
||||||
void ArcBall_CopyMat (HMatrix inm,
|
void ArcBall_CopyMat (HMatrix inm,
|
||||||
HMatrix outm);
|
HMatrix outm);
|
||||||
|
|
||||||
#endif /* __ARCBALL_H__ */
|
#endif /* __ARCBALL_H__ */
|
||||||
|
|
|
@ -43,13 +43,13 @@ init_compute (void)
|
||||||
gimp_vector3_set (&mapvals.secondaxis, 0.0, 1.0, 0.0);
|
gimp_vector3_set (&mapvals.secondaxis, 0.0, 1.0, 0.0);
|
||||||
|
|
||||||
gimp_vector3_rotate (&mapvals.firstaxis,
|
gimp_vector3_rotate (&mapvals.firstaxis,
|
||||||
gimp_deg_to_rad (mapvals.alpha),
|
gimp_deg_to_rad (mapvals.alpha),
|
||||||
gimp_deg_to_rad (mapvals.beta),
|
gimp_deg_to_rad (mapvals.beta),
|
||||||
gimp_deg_to_rad (mapvals.gamma));
|
gimp_deg_to_rad (mapvals.gamma));
|
||||||
gimp_vector3_rotate (&mapvals.secondaxis,
|
gimp_vector3_rotate (&mapvals.secondaxis,
|
||||||
gimp_deg_to_rad (mapvals.alpha),
|
gimp_deg_to_rad (mapvals.alpha),
|
||||||
gimp_deg_to_rad (mapvals.beta),
|
gimp_deg_to_rad (mapvals.beta),
|
||||||
gimp_deg_to_rad (mapvals.gamma));
|
gimp_deg_to_rad (mapvals.gamma));
|
||||||
|
|
||||||
/* Compute the 2D bounding box of the sphere spanned by the axis */
|
/* Compute the 2D bounding box of the sphere spanned by the axis */
|
||||||
/* ============================================================= */
|
/* ============================================================= */
|
||||||
|
@ -70,16 +70,16 @@ init_compute (void)
|
||||||
gimp_vector3_set (&mapvals.normal, 0.0, 0.0, 1.0);
|
gimp_vector3_set (&mapvals.normal, 0.0, 0.0, 1.0);
|
||||||
|
|
||||||
gimp_vector3_rotate (&mapvals.firstaxis,
|
gimp_vector3_rotate (&mapvals.firstaxis,
|
||||||
gimp_deg_to_rad (mapvals.alpha),
|
gimp_deg_to_rad (mapvals.alpha),
|
||||||
gimp_deg_to_rad (mapvals.beta),
|
gimp_deg_to_rad (mapvals.beta),
|
||||||
gimp_deg_to_rad (mapvals.gamma));
|
gimp_deg_to_rad (mapvals.gamma));
|
||||||
gimp_vector3_rotate (&mapvals.secondaxis,
|
gimp_vector3_rotate (&mapvals.secondaxis,
|
||||||
gimp_deg_to_rad (mapvals.alpha),
|
gimp_deg_to_rad (mapvals.alpha),
|
||||||
gimp_deg_to_rad (mapvals.beta),
|
gimp_deg_to_rad (mapvals.beta),
|
||||||
gimp_deg_to_rad (mapvals.gamma));
|
gimp_deg_to_rad (mapvals.gamma));
|
||||||
|
|
||||||
mapvals.normal = gimp_vector3_cross_product (&mapvals.firstaxis,
|
mapvals.normal = gimp_vector3_cross_product (&mapvals.firstaxis,
|
||||||
&mapvals.secondaxis);
|
&mapvals.secondaxis);
|
||||||
|
|
||||||
if (mapvals.normal.z < 0.0)
|
if (mapvals.normal.z < 0.0)
|
||||||
gimp_vector3_mul (&mapvals.normal, -1.0);
|
gimp_vector3_mul (&mapvals.normal, -1.0);
|
||||||
|
@ -133,12 +133,12 @@ init_compute (void)
|
||||||
|
|
||||||
for (i = 0; i < 6; i++)
|
for (i = 0; i < 6; i++)
|
||||||
{
|
{
|
||||||
box_drawables[i] = gimp_drawable_get (mapvals.boxmap_id[i]);
|
box_drawables[i] = gimp_drawable_get (mapvals.boxmap_id[i]);
|
||||||
|
|
||||||
gimp_pixel_rgn_init (&box_regions[i], box_drawables[i],
|
gimp_pixel_rgn_init (&box_regions[i], box_drawables[i],
|
||||||
0, 0,
|
0, 0,
|
||||||
box_drawables[i]->width,
|
box_drawables[i]->width,
|
||||||
box_drawables[i]->height,
|
box_drawables[i]->height,
|
||||||
FALSE, FALSE);
|
FALSE, FALSE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -174,13 +174,13 @@ init_compute (void)
|
||||||
|
|
||||||
for (i = 0; i < 2; i++)
|
for (i = 0; i < 2; i++)
|
||||||
{
|
{
|
||||||
cylinder_drawables[i] =
|
cylinder_drawables[i] =
|
||||||
gimp_drawable_get (mapvals.cylindermap_id[i]);
|
gimp_drawable_get (mapvals.cylindermap_id[i]);
|
||||||
|
|
||||||
gimp_pixel_rgn_init (&cylinder_regions[i], cylinder_drawables[i],
|
gimp_pixel_rgn_init (&cylinder_regions[i], cylinder_drawables[i],
|
||||||
0, 0,
|
0, 0,
|
||||||
cylinder_drawables[i]->width,
|
cylinder_drawables[i]->width,
|
||||||
cylinder_drawables[i]->height,
|
cylinder_drawables[i]->height,
|
||||||
FALSE, FALSE);
|
FALSE, FALSE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -192,9 +192,9 @@ init_compute (void)
|
||||||
|
|
||||||
static void
|
static void
|
||||||
render (gdouble x,
|
render (gdouble x,
|
||||||
gdouble y,
|
gdouble y,
|
||||||
GimpRGB *col,
|
GimpRGB *col,
|
||||||
gpointer data)
|
gpointer data)
|
||||||
{
|
{
|
||||||
GimpVector3 pos;
|
GimpVector3 pos;
|
||||||
|
|
||||||
|
@ -207,9 +207,9 @@ render (gdouble x,
|
||||||
|
|
||||||
static void
|
static void
|
||||||
show_progress (gint min,
|
show_progress (gint min,
|
||||||
gint max,
|
gint max,
|
||||||
gint curr,
|
gint curr,
|
||||||
gpointer data)
|
gpointer data)
|
||||||
{
|
{
|
||||||
gimp_progress_update ((gdouble) curr / (gdouble) max);
|
gimp_progress_update ((gdouble) curr / (gdouble) max);
|
||||||
}
|
}
|
||||||
|
@ -264,7 +264,7 @@ compute_image (void)
|
||||||
}
|
}
|
||||||
|
|
||||||
gimp_pixel_rgn_init (&dest_region, output_drawable,
|
gimp_pixel_rgn_init (&dest_region, output_drawable,
|
||||||
0, 0, width, height, TRUE, TRUE);
|
0, 0, width, height, TRUE, TRUE);
|
||||||
|
|
||||||
switch (mapvals.maptype)
|
switch (mapvals.maptype)
|
||||||
{
|
{
|
||||||
|
@ -294,22 +294,22 @@ compute_image (void)
|
||||||
|
|
||||||
if ((progress_counter++ % width) == 0)
|
if ((progress_counter++ % width) == 0)
|
||||||
gimp_progress_update ((gdouble) progress_counter /
|
gimp_progress_update ((gdouble) progress_counter /
|
||||||
(gdouble) maxcounter);
|
(gdouble) maxcounter);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
gimp_adaptive_supersample_area (0, 0,
|
gimp_adaptive_supersample_area (0, 0,
|
||||||
width - 1, height - 1,
|
width - 1, height - 1,
|
||||||
max_depth,
|
max_depth,
|
||||||
mapvals.pixeltreshold,
|
mapvals.pixeltreshold,
|
||||||
render,
|
render,
|
||||||
NULL,
|
NULL,
|
||||||
poke,
|
poke,
|
||||||
NULL,
|
NULL,
|
||||||
show_progress,
|
show_progress,
|
||||||
NULL);
|
NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Update the region */
|
/* Update the region */
|
||||||
|
|
|
@ -78,8 +78,8 @@ peek (gint x,
|
||||||
|
|
||||||
static GimpRGB
|
static GimpRGB
|
||||||
peek_box_image (gint image,
|
peek_box_image (gint image,
|
||||||
gint x,
|
gint x,
|
||||||
gint y)
|
gint y)
|
||||||
{
|
{
|
||||||
static guchar data[4];
|
static guchar data[4];
|
||||||
|
|
||||||
|
@ -108,8 +108,8 @@ peek_box_image (gint image,
|
||||||
|
|
||||||
static GimpRGB
|
static GimpRGB
|
||||||
peek_cylinder_image (gint image,
|
peek_cylinder_image (gint image,
|
||||||
gint x,
|
gint x,
|
||||||
gint y)
|
gint y)
|
||||||
{
|
{
|
||||||
static guchar data[4];
|
static guchar data[4];
|
||||||
|
|
||||||
|
@ -151,7 +151,7 @@ poke (gint x,
|
||||||
|
|
||||||
gint
|
gint
|
||||||
checkbounds (gint x,
|
checkbounds (gint x,
|
||||||
gint y)
|
gint y)
|
||||||
{
|
{
|
||||||
if (x < border_x1 || y < border_y1 || x >= border_x2 || y >= border_y2)
|
if (x < border_x1 || y < border_y1 || x >= border_x2 || y >= border_y2)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
@ -161,8 +161,8 @@ checkbounds (gint x,
|
||||||
|
|
||||||
static gint
|
static gint
|
||||||
checkbounds_box_image (gint image,
|
checkbounds_box_image (gint image,
|
||||||
gint x,
|
gint x,
|
||||||
gint y)
|
gint y)
|
||||||
{
|
{
|
||||||
gint w, h;
|
gint w, h;
|
||||||
|
|
||||||
|
@ -177,8 +177,8 @@ checkbounds_box_image (gint image,
|
||||||
|
|
||||||
static gint
|
static gint
|
||||||
checkbounds_cylinder_image (gint image,
|
checkbounds_cylinder_image (gint image,
|
||||||
gint x,
|
gint x,
|
||||||
gint y)
|
gint y)
|
||||||
{
|
{
|
||||||
gint w, h;
|
gint w, h;
|
||||||
|
|
||||||
|
@ -193,7 +193,7 @@ checkbounds_cylinder_image (gint image,
|
||||||
|
|
||||||
GimpVector3
|
GimpVector3
|
||||||
int_to_pos (gint x,
|
int_to_pos (gint x,
|
||||||
gint y)
|
gint y)
|
||||||
{
|
{
|
||||||
GimpVector3 pos;
|
GimpVector3 pos;
|
||||||
|
|
||||||
|
@ -206,9 +206,9 @@ int_to_pos (gint x,
|
||||||
|
|
||||||
void
|
void
|
||||||
pos_to_int (gdouble x,
|
pos_to_int (gdouble x,
|
||||||
gdouble y,
|
gdouble y,
|
||||||
gint *scr_x,
|
gint *scr_x,
|
||||||
gint *scr_y)
|
gint *scr_y)
|
||||||
{
|
{
|
||||||
*scr_x = (gint) ((x * (gdouble) width));
|
*scr_x = (gint) ((x * (gdouble) width));
|
||||||
*scr_y = (gint) ((y * (gdouble) height));
|
*scr_y = (gint) ((y * (gdouble) height));
|
||||||
|
@ -221,8 +221,8 @@ pos_to_int (gdouble x,
|
||||||
|
|
||||||
GimpRGB
|
GimpRGB
|
||||||
get_image_color (gdouble u,
|
get_image_color (gdouble u,
|
||||||
gdouble v,
|
gdouble v,
|
||||||
gint *inside)
|
gint *inside)
|
||||||
{
|
{
|
||||||
gint x1, y1, x2, y2;
|
gint x1, y1, x2, y2;
|
||||||
GimpRGB p[4];
|
GimpRGB p[4];
|
||||||
|
@ -279,8 +279,8 @@ get_image_color (gdouble u,
|
||||||
|
|
||||||
GimpRGB
|
GimpRGB
|
||||||
get_box_image_color (gint image,
|
get_box_image_color (gint image,
|
||||||
gdouble u,
|
gdouble u,
|
||||||
gdouble v)
|
gdouble v)
|
||||||
{
|
{
|
||||||
gint w, h;
|
gint w, h;
|
||||||
gint x1, y1, x2, y2;
|
gint x1, y1, x2, y2;
|
||||||
|
@ -311,8 +311,8 @@ get_box_image_color (gint image,
|
||||||
|
|
||||||
GimpRGB
|
GimpRGB
|
||||||
get_cylinder_image_color (gint image,
|
get_cylinder_image_color (gint image,
|
||||||
gdouble u,
|
gdouble u,
|
||||||
gdouble v)
|
gdouble v)
|
||||||
{
|
{
|
||||||
gint w, h;
|
gint w, h;
|
||||||
gint x1, y1, x2, y2;
|
gint x1, y1, x2, y2;
|
||||||
|
@ -347,13 +347,13 @@ get_cylinder_image_color (gint image,
|
||||||
|
|
||||||
gint
|
gint
|
||||||
image_setup (GimpDrawable *drawable,
|
image_setup (GimpDrawable *drawable,
|
||||||
gint interactive)
|
gint interactive)
|
||||||
{
|
{
|
||||||
/* Set the tile cache size */
|
/* Set the tile cache size */
|
||||||
/* ======================= */
|
/* ======================= */
|
||||||
|
|
||||||
gimp_tile_cache_ntiles ((drawable->width + gimp_tile_width() - 1) /
|
gimp_tile_cache_ntiles ((drawable->width + gimp_tile_width() - 1) /
|
||||||
gimp_tile_width ());
|
gimp_tile_width ());
|
||||||
|
|
||||||
/* Get some useful info on the input drawable */
|
/* Get some useful info on the input drawable */
|
||||||
/* ========================================== */
|
/* ========================================== */
|
||||||
|
@ -362,13 +362,13 @@ image_setup (GimpDrawable *drawable,
|
||||||
output_drawable = drawable;
|
output_drawable = drawable;
|
||||||
|
|
||||||
gimp_drawable_mask_bounds (drawable->drawable_id,
|
gimp_drawable_mask_bounds (drawable->drawable_id,
|
||||||
&border_x1, &border_y1, &border_x2, &border_y2);
|
&border_x1, &border_y1, &border_x2, &border_y2);
|
||||||
|
|
||||||
width = input_drawable->width;
|
width = input_drawable->width;
|
||||||
height = input_drawable->height;
|
height = input_drawable->height;
|
||||||
|
|
||||||
gimp_pixel_rgn_init (&source_region, input_drawable,
|
gimp_pixel_rgn_init (&source_region, input_drawable,
|
||||||
0, 0, width, height, FALSE, FALSE);
|
0, 0, width, height, FALSE, FALSE);
|
||||||
|
|
||||||
maxcounter = (glong) width * (glong) height;
|
maxcounter = (glong) width * (glong) height;
|
||||||
|
|
||||||
|
|
|
@ -30,34 +30,34 @@ extern GimpTile *current_in_tile, *current_out_tile;
|
||||||
/* ============================ */
|
/* ============================ */
|
||||||
|
|
||||||
extern gint image_setup (GimpDrawable *drawable,
|
extern gint image_setup (GimpDrawable *drawable,
|
||||||
gint interactive);
|
gint interactive);
|
||||||
extern glong in_xy_to_index (gint x,
|
extern glong in_xy_to_index (gint x,
|
||||||
gint y);
|
gint y);
|
||||||
extern glong out_xy_to_index (gint x,
|
extern glong out_xy_to_index (gint x,
|
||||||
gint y);
|
gint y);
|
||||||
extern gint checkbounds (gint x,
|
extern gint checkbounds (gint x,
|
||||||
gint y);
|
gint y);
|
||||||
extern GimpRGB peek (gint x,
|
extern GimpRGB peek (gint x,
|
||||||
gint y);
|
gint y);
|
||||||
extern void poke (gint x,
|
extern void poke (gint x,
|
||||||
gint y,
|
gint y,
|
||||||
GimpRGB *color,
|
GimpRGB *color,
|
||||||
gpointer data);
|
gpointer data);
|
||||||
extern GimpVector3 int_to_pos (gint x,
|
extern GimpVector3 int_to_pos (gint x,
|
||||||
gint y);
|
gint y);
|
||||||
extern void pos_to_int (gdouble x,
|
extern void pos_to_int (gdouble x,
|
||||||
gdouble y,
|
gdouble y,
|
||||||
gint *scr_x,
|
gint *scr_x,
|
||||||
gint *scr_y);
|
gint *scr_y);
|
||||||
|
|
||||||
extern GimpRGB get_image_color (gdouble u,
|
extern GimpRGB get_image_color (gdouble u,
|
||||||
gdouble v,
|
gdouble v,
|
||||||
gint *inside);
|
gint *inside);
|
||||||
extern GimpRGB get_box_image_color (gint image,
|
extern GimpRGB get_box_image_color (gint image,
|
||||||
gdouble u,
|
gdouble u,
|
||||||
gdouble v);
|
gdouble v);
|
||||||
extern GimpRGB get_cylinder_image_color (gint image,
|
extern GimpRGB get_cylinder_image_color (gint image,
|
||||||
gdouble u,
|
gdouble u,
|
||||||
gdouble v);
|
gdouble v);
|
||||||
|
|
||||||
#endif /* __MAPOBJECT_IMAGE_H__ */
|
#endif /* __MAPOBJECT_IMAGE_H__ */
|
||||||
|
|
|
@ -111,7 +111,7 @@ check_drawables (GimpDrawable *drawable)
|
||||||
for (i = 0; i < 6; i++)
|
for (i = 0; i < 6; i++)
|
||||||
{
|
{
|
||||||
if (mapvals.boxmap_id[i] == -1 ||
|
if (mapvals.boxmap_id[i] == -1 ||
|
||||||
!gimp_item_is_valid (mapvals.boxmap_id[i]) ||
|
!gimp_item_is_valid (mapvals.boxmap_id[i]) ||
|
||||||
gimp_drawable_is_gray (mapvals.boxmap_id[i]))
|
gimp_drawable_is_gray (mapvals.boxmap_id[i]))
|
||||||
mapvals.boxmap_id[i] = drawable->drawable_id;
|
mapvals.boxmap_id[i] = drawable->drawable_id;
|
||||||
}
|
}
|
||||||
|
@ -185,16 +185,16 @@ query (void)
|
||||||
};
|
};
|
||||||
|
|
||||||
gimp_install_procedure (PLUG_IN_PROC,
|
gimp_install_procedure (PLUG_IN_PROC,
|
||||||
N_("Map the image to an object (plane, sphere, box or cylinder)"),
|
N_("Map the image to an object (plane, sphere, box or cylinder)"),
|
||||||
"No help yet",
|
"No help yet",
|
||||||
"Tom Bech & Federico Mena Quintero",
|
"Tom Bech & Federico Mena Quintero",
|
||||||
"Tom Bech & Federico Mena Quintero",
|
"Tom Bech & Federico Mena Quintero",
|
||||||
"Version 1.2.0, July 16 1998",
|
"Version 1.2.0, July 16 1998",
|
||||||
N_("Map _Object..."),
|
N_("Map _Object..."),
|
||||||
"RGB*",
|
"RGB*",
|
||||||
GIMP_PLUGIN,
|
GIMP_PLUGIN,
|
||||||
G_N_ELEMENTS (args), 0,
|
G_N_ELEMENTS (args), 0,
|
||||||
args, NULL);
|
args, NULL);
|
||||||
|
|
||||||
gimp_plugin_menu_register (PLUG_IN_PROC, "<Image>/Filters/Map");
|
gimp_plugin_menu_register (PLUG_IN_PROC, "<Image>/Filters/Map");
|
||||||
}
|
}
|
||||||
|
@ -243,11 +243,11 @@ run (const gchar *name,
|
||||||
gimp_get_data ("plug_in_map_object", &mapvals);
|
gimp_get_data ("plug_in_map_object", &mapvals);
|
||||||
check_drawables (drawable);
|
check_drawables (drawable);
|
||||||
if (main_dialog (drawable))
|
if (main_dialog (drawable))
|
||||||
{
|
{
|
||||||
compute_image ();
|
compute_image ();
|
||||||
|
|
||||||
gimp_set_data (PLUG_IN_PROC, &mapvals, sizeof (MapObjectValues));
|
gimp_set_data (PLUG_IN_PROC, &mapvals, sizeof (MapObjectValues));
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case GIMP_RUN_WITH_LAST_VALS:
|
case GIMP_RUN_WITH_LAST_VALS:
|
||||||
|
@ -259,9 +259,9 @@ run (const gchar *name,
|
||||||
|
|
||||||
case GIMP_RUN_NONINTERACTIVE:
|
case GIMP_RUN_NONINTERACTIVE:
|
||||||
if (nparams != 50)
|
if (nparams != 50)
|
||||||
{
|
{
|
||||||
status = GIMP_PDB_CALLING_ERROR;
|
status = GIMP_PDB_CALLING_ERROR;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
mapvals.maptype = (MapType) param[3].data.d_int32;
|
mapvals.maptype = (MapType) param[3].data.d_int32;
|
||||||
|
@ -281,7 +281,7 @@ run (const gchar *name,
|
||||||
mapvals.beta = param[17].data.d_float;
|
mapvals.beta = param[17].data.d_float;
|
||||||
mapvals.gamma = param[18].data.d_float;
|
mapvals.gamma = param[18].data.d_float;
|
||||||
mapvals.lightsource.type = (LightType) param[19].data.d_int32;
|
mapvals.lightsource.type = (LightType) param[19].data.d_int32;
|
||||||
mapvals.lightsource.color = param[20].data.d_color;
|
mapvals.lightsource.color = param[20].data.d_color;
|
||||||
mapvals.lightsource.position.x = param[21].data.d_float;
|
mapvals.lightsource.position.x = param[21].data.d_float;
|
||||||
mapvals.lightsource.position.y = param[22].data.d_float;
|
mapvals.lightsource.position.y = param[22].data.d_float;
|
||||||
mapvals.lightsource.position.z = param[23].data.d_float;
|
mapvals.lightsource.position.z = param[23].data.d_float;
|
||||||
|
|
|
@ -31,18 +31,18 @@ static void compute_preview (gint x,
|
||||||
gint ph);
|
gint ph);
|
||||||
static void draw_light_marker (cairo_t *cr,
|
static void draw_light_marker (cairo_t *cr,
|
||||||
gint xpos,
|
gint xpos,
|
||||||
gint ypos);
|
gint ypos);
|
||||||
static void draw_line (cairo_t *cr,
|
static void draw_line (cairo_t *cr,
|
||||||
gint startx,
|
gint startx,
|
||||||
gint starty,
|
gint starty,
|
||||||
gint pw,
|
gint pw,
|
||||||
gint ph,
|
gint ph,
|
||||||
gdouble cx1,
|
gdouble cx1,
|
||||||
gdouble cy1,
|
gdouble cy1,
|
||||||
gdouble cx2,
|
gdouble cx2,
|
||||||
gdouble cy2,
|
gdouble cy2,
|
||||||
GimpVector3 a,
|
GimpVector3 a,
|
||||||
GimpVector3 b);
|
GimpVector3 b);
|
||||||
static void draw_wireframe (cairo_t *cr,
|
static void draw_wireframe (cairo_t *cr,
|
||||||
gint startx,
|
gint startx,
|
||||||
gint starty,
|
gint starty,
|
||||||
|
@ -51,24 +51,24 @@ static void draw_wireframe (cairo_t *cr,
|
||||||
static void draw_preview_wireframe (cairo_t *cr);
|
static void draw_preview_wireframe (cairo_t *cr);
|
||||||
static void draw_wireframe_plane (cairo_t *cr,
|
static void draw_wireframe_plane (cairo_t *cr,
|
||||||
gint startx,
|
gint startx,
|
||||||
gint starty,
|
gint starty,
|
||||||
gint pw,
|
gint pw,
|
||||||
gint ph);
|
gint ph);
|
||||||
static void draw_wireframe_sphere (cairo_t *cr,
|
static void draw_wireframe_sphere (cairo_t *cr,
|
||||||
gint startx,
|
gint startx,
|
||||||
gint starty,
|
gint starty,
|
||||||
gint pw,
|
gint pw,
|
||||||
gint ph);
|
gint ph);
|
||||||
static void draw_wireframe_box (cairo_t *cr,
|
static void draw_wireframe_box (cairo_t *cr,
|
||||||
gint startx,
|
gint startx,
|
||||||
gint starty,
|
gint starty,
|
||||||
gint pw,
|
gint pw,
|
||||||
gint ph);
|
gint ph);
|
||||||
static void draw_wireframe_cylinder (cairo_t *cr,
|
static void draw_wireframe_cylinder (cairo_t *cr,
|
||||||
gint startx,
|
gint startx,
|
||||||
gint starty,
|
gint starty,
|
||||||
gint pw,
|
gint pw,
|
||||||
gint ph);
|
gint ph);
|
||||||
|
|
||||||
/**************************************************************/
|
/**************************************************************/
|
||||||
/* Computes a preview of the rectangle starting at (x,y) with */
|
/* Computes a preview of the rectangle starting at (x,y) with */
|
||||||
|
@ -77,11 +77,11 @@ static void draw_wireframe_cylinder (cairo_t *cr,
|
||||||
|
|
||||||
static void
|
static void
|
||||||
compute_preview (gint x,
|
compute_preview (gint x,
|
||||||
gint y,
|
gint y,
|
||||||
gint w,
|
gint w,
|
||||||
gint h,
|
gint h,
|
||||||
gint pw,
|
gint pw,
|
||||||
gint ph)
|
gint ph)
|
||||||
{
|
{
|
||||||
gdouble xpostab[PREVIEW_WIDTH];
|
gdouble xpostab[PREVIEW_WIDTH];
|
||||||
gdouble ypostab[PREVIEW_HEIGHT];
|
gdouble ypostab[PREVIEW_HEIGHT];
|
||||||
|
@ -125,9 +125,9 @@ compute_preview (gint x,
|
||||||
}
|
}
|
||||||
|
|
||||||
gimp_rgba_set (&lightcheck,
|
gimp_rgba_set (&lightcheck,
|
||||||
GIMP_CHECK_LIGHT, GIMP_CHECK_LIGHT, GIMP_CHECK_LIGHT, 1.0);
|
GIMP_CHECK_LIGHT, GIMP_CHECK_LIGHT, GIMP_CHECK_LIGHT, 1.0);
|
||||||
gimp_rgba_set (&darkcheck,
|
gimp_rgba_set (&darkcheck,
|
||||||
GIMP_CHECK_DARK, GIMP_CHECK_DARK, GIMP_CHECK_DARK, 1.0);
|
GIMP_CHECK_DARK, GIMP_CHECK_DARK, GIMP_CHECK_DARK, 1.0);
|
||||||
gimp_vector3_set (&p2, -1.0, -1.0, 0.0);
|
gimp_vector3_set (&p2, -1.0, -1.0, 0.0);
|
||||||
|
|
||||||
cairo_surface_flush (preview_surface);
|
cairo_surface_flush (preview_surface);
|
||||||
|
@ -152,22 +152,22 @@ compute_preview (gint x,
|
||||||
if (f1)
|
if (f1)
|
||||||
{
|
{
|
||||||
if (color.a == 0.0)
|
if (color.a == 0.0)
|
||||||
color = lightcheck;
|
color = lightcheck;
|
||||||
else
|
else
|
||||||
gimp_rgb_composite (&color, &lightcheck,
|
gimp_rgb_composite (&color, &lightcheck,
|
||||||
GIMP_RGB_COMPOSITE_BEHIND);
|
GIMP_RGB_COMPOSITE_BEHIND);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (color.a == 0.0)
|
if (color.a == 0.0)
|
||||||
color = darkcheck;
|
color = darkcheck;
|
||||||
else
|
else
|
||||||
gimp_rgb_composite (&color, &darkcheck,
|
gimp_rgb_composite (&color, &darkcheck,
|
||||||
GIMP_RGB_COMPOSITE_BEHIND);
|
GIMP_RGB_COMPOSITE_BEHIND);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
gimp_rgb_get_uchar (&color, &r, &g, &b);
|
gimp_rgb_get_uchar (&color, &r, &g, &b);
|
||||||
GIMP_CAIRO_RGB24_SET_PIXEL((preview_rgb_data + index), r, g, b);
|
GIMP_CAIRO_RGB24_SET_PIXEL((preview_rgb_data + index), r, g, b);
|
||||||
index += 4;
|
index += 4;
|
||||||
}
|
}
|
||||||
|
@ -182,7 +182,7 @@ compute_preview (gint x,
|
||||||
|
|
||||||
gint
|
gint
|
||||||
check_light_hit (gint xpos,
|
check_light_hit (gint xpos,
|
||||||
gint ypos)
|
gint ypos)
|
||||||
{
|
{
|
||||||
gdouble dx, dy, r;
|
gdouble dx, dy, r;
|
||||||
|
|
||||||
|
@ -208,7 +208,7 @@ check_light_hit (gint xpos,
|
||||||
static void
|
static void
|
||||||
draw_light_marker (cairo_t *cr,
|
draw_light_marker (cairo_t *cr,
|
||||||
gint xpos,
|
gint xpos,
|
||||||
gint ypos)
|
gint ypos)
|
||||||
{
|
{
|
||||||
GdkColor color;
|
GdkColor color;
|
||||||
gint pw, ph, startx, starty;
|
gint pw, ph, startx, starty;
|
||||||
|
@ -238,16 +238,16 @@ draw_light_marker (cairo_t *cr,
|
||||||
static void
|
static void
|
||||||
draw_lights (cairo_t *cr,
|
draw_lights (cairo_t *cr,
|
||||||
gint startx,
|
gint startx,
|
||||||
gint starty,
|
gint starty,
|
||||||
gint pw,
|
gint pw,
|
||||||
gint ph)
|
gint ph)
|
||||||
{
|
{
|
||||||
gdouble dxpos, dypos;
|
gdouble dxpos, dypos;
|
||||||
gint xpos, ypos;
|
gint xpos, ypos;
|
||||||
|
|
||||||
gimp_vector_3d_to_2d (startx, starty, pw, ph,
|
gimp_vector_3d_to_2d (startx, starty, pw, ph,
|
||||||
&dxpos, &dypos, &mapvals.viewpoint,
|
&dxpos, &dypos, &mapvals.viewpoint,
|
||||||
&mapvals.lightsource.position);
|
&mapvals.lightsource.position);
|
||||||
xpos = RINT (dxpos);
|
xpos = RINT (dxpos);
|
||||||
ypos = RINT (dypos);
|
ypos = RINT (dypos);
|
||||||
|
|
||||||
|
@ -264,7 +264,7 @@ draw_lights (cairo_t *cr,
|
||||||
|
|
||||||
void
|
void
|
||||||
update_light (gint xpos,
|
update_light (gint xpos,
|
||||||
gint ypos)
|
gint ypos)
|
||||||
{
|
{
|
||||||
gint startx, starty, pw, ph;
|
gint startx, starty, pw, ph;
|
||||||
|
|
||||||
|
@ -274,7 +274,7 @@ update_light (gint xpos,
|
||||||
starty = (PREVIEW_HEIGHT - ph) / 2;
|
starty = (PREVIEW_HEIGHT - ph) / 2;
|
||||||
|
|
||||||
gimp_vector_2d_to_3d (startx, starty, pw, ph, xpos, ypos,
|
gimp_vector_2d_to_3d (startx, starty, pw, ph, xpos, ypos,
|
||||||
&mapvals.viewpoint, &mapvals.lightsource.position);
|
&mapvals.viewpoint, &mapvals.lightsource.position);
|
||||||
|
|
||||||
gtk_widget_queue_draw (previewarea);
|
gtk_widget_queue_draw (previewarea);
|
||||||
}
|
}
|
||||||
|
@ -363,9 +363,9 @@ draw_preview_wireframe (cairo_t *cr)
|
||||||
void
|
void
|
||||||
draw_wireframe (cairo_t *cr,
|
draw_wireframe (cairo_t *cr,
|
||||||
gint startx,
|
gint startx,
|
||||||
gint starty,
|
gint starty,
|
||||||
gint pw,
|
gint pw,
|
||||||
gint ph)
|
gint ph)
|
||||||
{
|
{
|
||||||
cairo_set_source_rgb (cr, 0.0, 0.0, 0.0);
|
cairo_set_source_rgb (cr, 0.0, 0.0, 0.0);
|
||||||
switch (mapvals.maptype)
|
switch (mapvals.maptype)
|
||||||
|
@ -388,9 +388,9 @@ draw_wireframe (cairo_t *cr,
|
||||||
static void
|
static void
|
||||||
draw_wireframe_plane (cairo_t *cr,
|
draw_wireframe_plane (cairo_t *cr,
|
||||||
gint startx,
|
gint startx,
|
||||||
gint starty,
|
gint starty,
|
||||||
gint pw,
|
gint pw,
|
||||||
gint ph)
|
gint ph)
|
||||||
{
|
{
|
||||||
GimpVector3 v1, v2, a, b, c, d, dir1, dir2;
|
GimpVector3 v1, v2, a, b, c, d, dir1, dir2;
|
||||||
gint cnt;
|
gint cnt;
|
||||||
|
@ -406,14 +406,14 @@ draw_wireframe_plane (cairo_t *cr,
|
||||||
gimp_vector3_set (&v2, 0.0, 0.5, 0.0);
|
gimp_vector3_set (&v2, 0.0, 0.5, 0.0);
|
||||||
|
|
||||||
gimp_vector3_rotate (&v1,
|
gimp_vector3_rotate (&v1,
|
||||||
gimp_deg_to_rad (mapvals.alpha),
|
gimp_deg_to_rad (mapvals.alpha),
|
||||||
gimp_deg_to_rad (mapvals.beta),
|
gimp_deg_to_rad (mapvals.beta),
|
||||||
gimp_deg_to_rad (mapvals.gamma));
|
gimp_deg_to_rad (mapvals.gamma));
|
||||||
|
|
||||||
gimp_vector3_rotate (&v2,
|
gimp_vector3_rotate (&v2,
|
||||||
gimp_deg_to_rad (mapvals.alpha),
|
gimp_deg_to_rad (mapvals.alpha),
|
||||||
gimp_deg_to_rad (mapvals.beta),
|
gimp_deg_to_rad (mapvals.beta),
|
||||||
gimp_deg_to_rad (mapvals.gamma));
|
gimp_deg_to_rad (mapvals.gamma));
|
||||||
|
|
||||||
dir1 = v1; gimp_vector3_normalize (&dir1);
|
dir1 = v1; gimp_vector3_normalize (&dir1);
|
||||||
dir2 = v2; gimp_vector3_normalize (&dir2);
|
dir2 = v2; gimp_vector3_normalize (&dir2);
|
||||||
|
@ -439,17 +439,17 @@ draw_wireframe_plane (cairo_t *cr,
|
||||||
for (cnt = 0; cnt <= WIRESIZE; cnt++)
|
for (cnt = 0; cnt <= WIRESIZE; cnt++)
|
||||||
{
|
{
|
||||||
gimp_vector_3d_to_2d (startx, starty, pw, ph,
|
gimp_vector_3d_to_2d (startx, starty, pw, ph,
|
||||||
&x1, &y1, &mapvals.viewpoint, &a);
|
&x1, &y1, &mapvals.viewpoint, &a);
|
||||||
gimp_vector_3d_to_2d (startx, starty, pw, ph,
|
gimp_vector_3d_to_2d (startx, starty, pw, ph,
|
||||||
&x2, &y2, &mapvals.viewpoint, &b);
|
&x2, &y2, &mapvals.viewpoint, &b);
|
||||||
|
|
||||||
cairo_move_to (cr, RINT (x1), RINT (y1));
|
cairo_move_to (cr, RINT (x1), RINT (y1));
|
||||||
cairo_line_to (cr, RINT (x2), RINT (y2));
|
cairo_line_to (cr, RINT (x2), RINT (y2));
|
||||||
|
|
||||||
gimp_vector_3d_to_2d (startx, starty, pw, ph,
|
gimp_vector_3d_to_2d (startx, starty, pw, ph,
|
||||||
&x1, &y1, &mapvals.viewpoint, &c);
|
&x1, &y1, &mapvals.viewpoint, &c);
|
||||||
gimp_vector_3d_to_2d (startx, starty, pw, ph,
|
gimp_vector_3d_to_2d (startx, starty, pw, ph,
|
||||||
&x2, &y2, &mapvals.viewpoint, &d);
|
&x2, &y2, &mapvals.viewpoint, &d);
|
||||||
|
|
||||||
cairo_move_to (cr, RINT (x1), RINT (y1));
|
cairo_move_to (cr, RINT (x1), RINT (y1));
|
||||||
cairo_line_to (cr, RINT (x2), RINT (y2));
|
cairo_line_to (cr, RINT (x2), RINT (y2));
|
||||||
|
@ -470,9 +470,9 @@ draw_wireframe_plane (cairo_t *cr,
|
||||||
static void
|
static void
|
||||||
draw_wireframe_sphere (cairo_t *cr,
|
draw_wireframe_sphere (cairo_t *cr,
|
||||||
gint startx,
|
gint startx,
|
||||||
gint starty,
|
gint starty,
|
||||||
gint pw,
|
gint pw,
|
||||||
gint ph)
|
gint ph)
|
||||||
{
|
{
|
||||||
GimpVector3 p[2 * (WIRESIZE + 5)];
|
GimpVector3 p[2 * (WIRESIZE + 5)];
|
||||||
gint cnt, cnt2;
|
gint cnt, cnt2;
|
||||||
|
@ -492,9 +492,9 @@ draw_wireframe_sphere (cairo_t *cr,
|
||||||
p[cnt].y = 0.0;
|
p[cnt].y = 0.0;
|
||||||
p[cnt].z = mapvals.radius * sin ((gdouble) cnt * twopifac);
|
p[cnt].z = mapvals.radius * sin ((gdouble) cnt * twopifac);
|
||||||
gimp_vector3_rotate (&p[cnt],
|
gimp_vector3_rotate (&p[cnt],
|
||||||
gimp_deg_to_rad (mapvals.alpha),
|
gimp_deg_to_rad (mapvals.alpha),
|
||||||
gimp_deg_to_rad (mapvals.beta),
|
gimp_deg_to_rad (mapvals.beta),
|
||||||
gimp_deg_to_rad (mapvals.gamma));
|
gimp_deg_to_rad (mapvals.gamma));
|
||||||
gimp_vector3_add (&p[cnt], &p[cnt], &mapvals.position);
|
gimp_vector3_add (&p[cnt], &p[cnt], &mapvals.position);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -506,9 +506,9 @@ draw_wireframe_sphere (cairo_t *cr,
|
||||||
p[cnt].y = mapvals.radius * sin ((gdouble) (cnt-(WIRESIZE+1))*twopifac);
|
p[cnt].y = mapvals.radius * sin ((gdouble) (cnt-(WIRESIZE+1))*twopifac);
|
||||||
p[cnt].z = 0.0;
|
p[cnt].z = 0.0;
|
||||||
gimp_vector3_rotate (&p[cnt],
|
gimp_vector3_rotate (&p[cnt],
|
||||||
gimp_deg_to_rad (mapvals.alpha),
|
gimp_deg_to_rad (mapvals.alpha),
|
||||||
gimp_deg_to_rad (mapvals.beta),
|
gimp_deg_to_rad (mapvals.beta),
|
||||||
gimp_deg_to_rad (mapvals.gamma));
|
gimp_deg_to_rad (mapvals.gamma));
|
||||||
gimp_vector3_add (&p[cnt], &p[cnt], &mapvals.position);
|
gimp_vector3_add (&p[cnt], &p[cnt], &mapvals.position);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -521,16 +521,16 @@ draw_wireframe_sphere (cairo_t *cr,
|
||||||
|
|
||||||
gimp_vector3_set (&p[cnt], 0.0, -0.35, 0.0);
|
gimp_vector3_set (&p[cnt], 0.0, -0.35, 0.0);
|
||||||
gimp_vector3_rotate (&p[cnt],
|
gimp_vector3_rotate (&p[cnt],
|
||||||
gimp_deg_to_rad (mapvals.alpha),
|
gimp_deg_to_rad (mapvals.alpha),
|
||||||
gimp_deg_to_rad (mapvals.beta),
|
gimp_deg_to_rad (mapvals.beta),
|
||||||
gimp_deg_to_rad (mapvals.gamma));
|
gimp_deg_to_rad (mapvals.gamma));
|
||||||
p[cnt+1] = mapvals.position;
|
p[cnt+1] = mapvals.position;
|
||||||
|
|
||||||
gimp_vector3_set (&p[cnt+2], 0.0, 0.0, -0.35);
|
gimp_vector3_set (&p[cnt+2], 0.0, 0.0, -0.35);
|
||||||
gimp_vector3_rotate (&p[cnt+2],
|
gimp_vector3_rotate (&p[cnt+2],
|
||||||
gimp_deg_to_rad (mapvals.alpha),
|
gimp_deg_to_rad (mapvals.alpha),
|
||||||
gimp_deg_to_rad (mapvals.beta),
|
gimp_deg_to_rad (mapvals.beta),
|
||||||
gimp_deg_to_rad (mapvals.gamma));
|
gimp_deg_to_rad (mapvals.gamma));
|
||||||
p[cnt+3] = mapvals.position;
|
p[cnt+3] = mapvals.position;
|
||||||
|
|
||||||
p[cnt + 4] = p[cnt];
|
p[cnt + 4] = p[cnt];
|
||||||
|
@ -554,9 +554,9 @@ draw_wireframe_sphere (cairo_t *cr,
|
||||||
if (p[cnt].z > mapvals.position.z && p[cnt + 1].z > mapvals.position.z)
|
if (p[cnt].z > mapvals.position.z && p[cnt + 1].z > mapvals.position.z)
|
||||||
{
|
{
|
||||||
gimp_vector_3d_to_2d (startx, starty, pw, ph,
|
gimp_vector_3d_to_2d (startx, starty, pw, ph,
|
||||||
&x1, &y1, &mapvals.viewpoint, &p[cnt]);
|
&x1, &y1, &mapvals.viewpoint, &p[cnt]);
|
||||||
gimp_vector_3d_to_2d (startx, starty, pw, ph,
|
gimp_vector_3d_to_2d (startx, starty, pw, ph,
|
||||||
&x2, &y2, &mapvals.viewpoint, &p[cnt + 1]);
|
&x2, &y2, &mapvals.viewpoint, &p[cnt + 1]);
|
||||||
|
|
||||||
cairo_move_to (cr, (gint) (x1 + 0.5), (gint) (y1 + 0.5));
|
cairo_move_to (cr, (gint) (x1 + 0.5), (gint) (y1 + 0.5));
|
||||||
cairo_line_to (cr, (gint) (x2 + 0.5), (gint) (y2 + 0.5));
|
cairo_line_to (cr, (gint) (x2 + 0.5), (gint) (y2 + 0.5));
|
||||||
|
@ -569,9 +569,9 @@ draw_wireframe_sphere (cairo_t *cr,
|
||||||
for (cnt = 0; cnt < 3; cnt++)
|
for (cnt = 0; cnt < 3; cnt++)
|
||||||
{
|
{
|
||||||
gimp_vector_3d_to_2d (startx, starty, pw, ph,
|
gimp_vector_3d_to_2d (startx, starty, pw, ph,
|
||||||
&x1, &y1, &mapvals.viewpoint, &p[cnt2]);
|
&x1, &y1, &mapvals.viewpoint, &p[cnt2]);
|
||||||
gimp_vector_3d_to_2d (startx, starty, pw, ph,
|
gimp_vector_3d_to_2d (startx, starty, pw, ph,
|
||||||
&x2, &y2, &mapvals.viewpoint, &p[cnt2 + 1]);
|
&x2, &y2, &mapvals.viewpoint, &p[cnt2 + 1]);
|
||||||
|
|
||||||
cairo_move_to (cr, RINT (x1), RINT (y1));
|
cairo_move_to (cr, RINT (x1), RINT (y1));
|
||||||
cairo_line_to (cr, RINT (x2), RINT (y2));
|
cairo_line_to (cr, RINT (x2), RINT (y2));
|
||||||
|
@ -588,23 +588,23 @@ draw_wireframe_sphere (cairo_t *cr,
|
||||||
|
|
||||||
static void
|
static void
|
||||||
draw_line (cairo_t *cr,
|
draw_line (cairo_t *cr,
|
||||||
gint startx,
|
gint startx,
|
||||||
gint starty,
|
gint starty,
|
||||||
gint pw,
|
gint pw,
|
||||||
gint ph,
|
gint ph,
|
||||||
gdouble cx1,
|
gdouble cx1,
|
||||||
gdouble cy1,
|
gdouble cy1,
|
||||||
gdouble cx2,
|
gdouble cx2,
|
||||||
gdouble cy2,
|
gdouble cy2,
|
||||||
GimpVector3 a,
|
GimpVector3 a,
|
||||||
GimpVector3 b)
|
GimpVector3 b)
|
||||||
{
|
{
|
||||||
gdouble x1, y1, x2, y2;
|
gdouble x1, y1, x2, y2;
|
||||||
|
|
||||||
gimp_vector_3d_to_2d (startx, starty, pw, ph,
|
gimp_vector_3d_to_2d (startx, starty, pw, ph,
|
||||||
&x1, &y1, &mapvals.viewpoint, &a);
|
&x1, &y1, &mapvals.viewpoint, &a);
|
||||||
gimp_vector_3d_to_2d (startx, starty, pw, ph,
|
gimp_vector_3d_to_2d (startx, starty, pw, ph,
|
||||||
&x2, &y2, &mapvals.viewpoint, &b);
|
&x2, &y2, &mapvals.viewpoint, &b);
|
||||||
|
|
||||||
cairo_move_to (cr, RINT (x1), RINT (y1));
|
cairo_move_to (cr, RINT (x1), RINT (y1));
|
||||||
cairo_line_to (cr, RINT (x2), RINT (y2));
|
cairo_line_to (cr, RINT (x2), RINT (y2));
|
||||||
|
@ -613,9 +613,9 @@ draw_line (cairo_t *cr,
|
||||||
static void
|
static void
|
||||||
draw_wireframe_box (cairo_t *cr,
|
draw_wireframe_box (cairo_t *cr,
|
||||||
gint startx,
|
gint startx,
|
||||||
gint starty,
|
gint starty,
|
||||||
gint pw,
|
gint pw,
|
||||||
gint ph)
|
gint ph)
|
||||||
{
|
{
|
||||||
GimpVector3 p[8], tmp, scale;
|
GimpVector3 p[8], tmp, scale;
|
||||||
gint i;
|
gint i;
|
||||||
|
@ -684,9 +684,9 @@ draw_wireframe_box (cairo_t *cr,
|
||||||
static void
|
static void
|
||||||
draw_wireframe_cylinder (cairo_t *cr,
|
draw_wireframe_cylinder (cairo_t *cr,
|
||||||
gint startx,
|
gint startx,
|
||||||
gint starty,
|
gint starty,
|
||||||
gint pw,
|
gint pw,
|
||||||
gint ph)
|
gint ph)
|
||||||
{
|
{
|
||||||
GimpVector3 p[2*8], a, axis, scale;
|
GimpVector3 p[2*8], a, axis, scale;
|
||||||
gint i;
|
gint i;
|
||||||
|
|
|
@ -33,11 +33,11 @@ typedef struct
|
||||||
|
|
||||||
static GimpRGB
|
static GimpRGB
|
||||||
phong_shade (GimpVector3 *pos,
|
phong_shade (GimpVector3 *pos,
|
||||||
GimpVector3 *viewpoint,
|
GimpVector3 *viewpoint,
|
||||||
GimpVector3 *normal,
|
GimpVector3 *normal,
|
||||||
GimpRGB *diff_col,
|
GimpRGB *diff_col,
|
||||||
GimpRGB *spec_col,
|
GimpRGB *spec_col,
|
||||||
LightType type)
|
LightType type)
|
||||||
{
|
{
|
||||||
GimpRGB ambientcolor, diffusecolor, specularcolor;
|
GimpRGB ambientcolor, diffusecolor, specularcolor;
|
||||||
gdouble NL, RV, dist;
|
gdouble NL, RV, dist;
|
||||||
|
@ -106,10 +106,10 @@ phong_shade (GimpVector3 *pos,
|
||||||
|
|
||||||
static gint
|
static gint
|
||||||
plane_intersect (GimpVector3 *dir,
|
plane_intersect (GimpVector3 *dir,
|
||||||
GimpVector3 *viewp,
|
GimpVector3 *viewp,
|
||||||
GimpVector3 *ipos,
|
GimpVector3 *ipos,
|
||||||
gdouble *u,
|
gdouble *u,
|
||||||
gdouble *v)
|
gdouble *v)
|
||||||
{
|
{
|
||||||
static gdouble det, det1, det2, det3, t;
|
static gdouble det, det1, det2, det3, t;
|
||||||
|
|
||||||
|
@ -121,11 +121,11 @@ plane_intersect (GimpVector3 *dir,
|
||||||
/* ============================================================= */
|
/* ============================================================= */
|
||||||
|
|
||||||
det = (imat[0][0] * imat[1][1] * imat[2][2] +
|
det = (imat[0][0] * imat[1][1] * imat[2][2] +
|
||||||
imat[0][1] * imat[1][2] * imat[2][0] +
|
imat[0][1] * imat[1][2] * imat[2][0] +
|
||||||
imat[0][2] * imat[1][0] * imat[2][1] -
|
imat[0][2] * imat[1][0] * imat[2][1] -
|
||||||
imat[0][2] * imat[1][1] * imat[2][0] -
|
imat[0][2] * imat[1][1] * imat[2][0] -
|
||||||
imat[0][0] * imat[1][2] * imat[2][1] -
|
imat[0][0] * imat[1][2] * imat[2][1] -
|
||||||
imat[2][2] * imat[0][1] * imat[1][0]);
|
imat[2][2] * imat[0][1] * imat[1][0]);
|
||||||
|
|
||||||
/* If the determinant is non-zero, a intersection point exists */
|
/* If the determinant is non-zero, a intersection point exists */
|
||||||
/* =========================================================== */
|
/* =========================================================== */
|
||||||
|
@ -136,25 +136,25 @@ plane_intersect (GimpVector3 *dir,
|
||||||
/* ==================================================== */
|
/* ==================================================== */
|
||||||
|
|
||||||
det1 = (imat[0][3] * imat[1][1] * imat[2][2] +
|
det1 = (imat[0][3] * imat[1][1] * imat[2][2] +
|
||||||
imat[0][1] * imat[1][2] * imat[2][3] +
|
imat[0][1] * imat[1][2] * imat[2][3] +
|
||||||
imat[0][2] * imat[1][3] * imat[2][1] -
|
imat[0][2] * imat[1][3] * imat[2][1] -
|
||||||
imat[0][2] * imat[1][1] * imat[2][3] -
|
imat[0][2] * imat[1][1] * imat[2][3] -
|
||||||
imat[1][2] * imat[2][1] * imat[0][3] -
|
imat[1][2] * imat[2][1] * imat[0][3] -
|
||||||
imat[2][2] * imat[0][1] * imat[1][3]);
|
imat[2][2] * imat[0][1] * imat[1][3]);
|
||||||
|
|
||||||
det2 = (imat[0][0] * imat[1][3] * imat[2][2] +
|
det2 = (imat[0][0] * imat[1][3] * imat[2][2] +
|
||||||
imat[0][3] * imat[1][2] * imat[2][0] +
|
imat[0][3] * imat[1][2] * imat[2][0] +
|
||||||
imat[0][2] * imat[1][0] * imat[2][3] -
|
imat[0][2] * imat[1][0] * imat[2][3] -
|
||||||
imat[0][2] * imat[1][3] * imat[2][0] -
|
imat[0][2] * imat[1][3] * imat[2][0] -
|
||||||
imat[1][2] * imat[2][3] * imat[0][0] -
|
imat[1][2] * imat[2][3] * imat[0][0] -
|
||||||
imat[2][2] * imat[0][3] * imat[1][0]);
|
imat[2][2] * imat[0][3] * imat[1][0]);
|
||||||
|
|
||||||
det3 = (imat[0][0] * imat[1][1] * imat[2][3] +
|
det3 = (imat[0][0] * imat[1][1] * imat[2][3] +
|
||||||
imat[0][1] * imat[1][3] * imat[2][0] +
|
imat[0][1] * imat[1][3] * imat[2][0] +
|
||||||
imat[0][3] * imat[1][0] * imat[2][1] -
|
imat[0][3] * imat[1][0] * imat[2][1] -
|
||||||
imat[0][3] * imat[1][1] * imat[2][0] -
|
imat[0][3] * imat[1][1] * imat[2][0] -
|
||||||
imat[1][3] * imat[2][1] * imat[0][0] -
|
imat[1][3] * imat[2][1] * imat[0][0] -
|
||||||
imat[2][3] * imat[0][1] * imat[1][0]);
|
imat[2][3] * imat[0][1] * imat[1][0]);
|
||||||
|
|
||||||
/* Now we have the simultanous solutions. Lets compute the unknowns */
|
/* Now we have the simultanous solutions. Lets compute the unknowns */
|
||||||
/* (skip u&v if t is <0, this means the intersection is behind us) */
|
/* (skip u&v if t is <0, this means the intersection is behind us) */
|
||||||
|
@ -167,7 +167,7 @@ plane_intersect (GimpVector3 *dir,
|
||||||
*u = 1.0 + ((det2 / det) - 0.5);
|
*u = 1.0 + ((det2 / det) - 0.5);
|
||||||
*v = 1.0 + ((det3 / det) - 0.5);
|
*v = 1.0 + ((det3 / det) - 0.5);
|
||||||
|
|
||||||
ipos->x = viewp->x + t * dir->x;
|
ipos->x = viewp->x + t * dir->x;
|
||||||
ipos->y = viewp->y + t * dir->y;
|
ipos->y = viewp->y + t * dir->y;
|
||||||
ipos->z = viewp->z + t * dir->z;
|
ipos->z = viewp->z + t * dir->z;
|
||||||
|
|
||||||
|
@ -206,17 +206,17 @@ get_ray_color_plane (GimpVector3 *pos)
|
||||||
color = get_image_color (vx, vy, &inside);
|
color = get_image_color (vx, vy, &inside);
|
||||||
|
|
||||||
if (color.a != 0.0 && inside == TRUE &&
|
if (color.a != 0.0 && inside == TRUE &&
|
||||||
mapvals.lightsource.type != NO_LIGHT)
|
mapvals.lightsource.type != NO_LIGHT)
|
||||||
{
|
{
|
||||||
/* Compute shading at this point */
|
/* Compute shading at this point */
|
||||||
/* ============================= */
|
/* ============================= */
|
||||||
|
|
||||||
color = phong_shade (&spos,
|
color = phong_shade (&spos,
|
||||||
&mapvals.viewpoint,
|
&mapvals.viewpoint,
|
||||||
&mapvals.normal,
|
&mapvals.normal,
|
||||||
&color,
|
&color,
|
||||||
&mapvals.lightsource.color,
|
&mapvals.lightsource.color,
|
||||||
mapvals.lightsource.type);
|
mapvals.lightsource.type);
|
||||||
|
|
||||||
gimp_rgb_clamp (&color);
|
gimp_rgb_clamp (&color);
|
||||||
}
|
}
|
||||||
|
@ -225,7 +225,7 @@ get_ray_color_plane (GimpVector3 *pos)
|
||||||
if (mapvals.transparent_background == FALSE && color.a < 1.0)
|
if (mapvals.transparent_background == FALSE && color.a < 1.0)
|
||||||
{
|
{
|
||||||
gimp_rgb_composite (&color, &background,
|
gimp_rgb_composite (&color, &background,
|
||||||
GIMP_RGB_COMPOSITE_BEHIND);
|
GIMP_RGB_COMPOSITE_BEHIND);
|
||||||
}
|
}
|
||||||
|
|
||||||
return color;
|
return color;
|
||||||
|
@ -238,8 +238,8 @@ get_ray_color_plane (GimpVector3 *pos)
|
||||||
|
|
||||||
static void
|
static void
|
||||||
sphere_to_image (GimpVector3 *normal,
|
sphere_to_image (GimpVector3 *normal,
|
||||||
gdouble *u,
|
gdouble *u,
|
||||||
gdouble *v)
|
gdouble *v)
|
||||||
{
|
{
|
||||||
static gdouble alpha, fac;
|
static gdouble alpha, fac;
|
||||||
static GimpVector3 cross_prod;
|
static GimpVector3 cross_prod;
|
||||||
|
@ -255,7 +255,7 @@ sphere_to_image (GimpVector3 *normal,
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
fac = (gimp_vector3_inner_product (&mapvals.firstaxis, normal) /
|
fac = (gimp_vector3_inner_product (&mapvals.firstaxis, normal) /
|
||||||
sin (alpha));
|
sin (alpha));
|
||||||
|
|
||||||
/* Make sure that we map to -1.0..1.0 (take care of rounding errors) */
|
/* Make sure that we map to -1.0..1.0 (take care of rounding errors) */
|
||||||
/* ================================================================= */
|
/* ================================================================= */
|
||||||
|
@ -265,7 +265,7 @@ sphere_to_image (GimpVector3 *normal,
|
||||||
*u = acos (fac) / (2.0 * G_PI);
|
*u = acos (fac) / (2.0 * G_PI);
|
||||||
|
|
||||||
cross_prod = gimp_vector3_cross_product (&mapvals.secondaxis,
|
cross_prod = gimp_vector3_cross_product (&mapvals.secondaxis,
|
||||||
&mapvals.firstaxis);
|
&mapvals.firstaxis);
|
||||||
|
|
||||||
if (gimp_vector3_inner_product (&cross_prod, normal) < 0.0)
|
if (gimp_vector3_inner_product (&cross_prod, normal) < 0.0)
|
||||||
*u = 1.0 - *u;
|
*u = 1.0 - *u;
|
||||||
|
@ -278,9 +278,9 @@ sphere_to_image (GimpVector3 *normal,
|
||||||
|
|
||||||
static gint
|
static gint
|
||||||
sphere_intersect (GimpVector3 *dir,
|
sphere_intersect (GimpVector3 *dir,
|
||||||
GimpVector3 *viewp,
|
GimpVector3 *viewp,
|
||||||
GimpVector3 *spos1,
|
GimpVector3 *spos1,
|
||||||
GimpVector3 *spos2)
|
GimpVector3 *spos2)
|
||||||
{
|
{
|
||||||
static gdouble alpha, beta, tau, s1, s2, tmp;
|
static gdouble alpha, beta, tau, s1, s2, tmp;
|
||||||
static GimpVector3 t;
|
static GimpVector3 t;
|
||||||
|
@ -368,11 +368,11 @@ get_ray_color_sphere (GimpVector3 *pos)
|
||||||
/* =================================== */
|
/* =================================== */
|
||||||
|
|
||||||
color = phong_shade (&spos1,
|
color = phong_shade (&spos1,
|
||||||
&mapvals.viewpoint,
|
&mapvals.viewpoint,
|
||||||
&normal,
|
&normal,
|
||||||
&color,
|
&color,
|
||||||
&mapvals.lightsource.color,
|
&mapvals.lightsource.color,
|
||||||
mapvals.lightsource.type);
|
mapvals.lightsource.type);
|
||||||
|
|
||||||
gimp_rgb_clamp (&color);
|
gimp_rgb_clamp (&color);
|
||||||
|
|
||||||
|
@ -387,33 +387,33 @@ get_ray_color_sphere (GimpVector3 *pos)
|
||||||
gimp_vector3_mul (&normal, -1.0);
|
gimp_vector3_mul (&normal, -1.0);
|
||||||
|
|
||||||
color2 = phong_shade (&spos2,
|
color2 = phong_shade (&spos2,
|
||||||
&mapvals.viewpoint,
|
&mapvals.viewpoint,
|
||||||
&normal,
|
&normal,
|
||||||
&color2,
|
&color2,
|
||||||
&mapvals.lightsource.color,
|
&mapvals.lightsource.color,
|
||||||
mapvals.lightsource.type);
|
mapvals.lightsource.type);
|
||||||
|
|
||||||
gimp_rgb_clamp (&color2);
|
gimp_rgb_clamp (&color2);
|
||||||
|
|
||||||
/* Compute a mix of the first and second colors */
|
/* Compute a mix of the first and second colors */
|
||||||
/* ============================================ */
|
/* ============================================ */
|
||||||
|
|
||||||
gimp_rgb_composite (&color, &color2, GIMP_RGB_COMPOSITE_NORMAL);
|
gimp_rgb_composite (&color, &color2, GIMP_RGB_COMPOSITE_NORMAL);
|
||||||
gimp_rgb_clamp (&color);
|
gimp_rgb_clamp (&color);
|
||||||
}
|
}
|
||||||
else if (color.a != 0.0 &&
|
else if (color.a != 0.0 &&
|
||||||
inside == TRUE &&
|
inside == TRUE &&
|
||||||
mapvals.lightsource.type != NO_LIGHT)
|
mapvals.lightsource.type != NO_LIGHT)
|
||||||
{
|
{
|
||||||
/* Compute shading at this point */
|
/* Compute shading at this point */
|
||||||
/* ============================= */
|
/* ============================= */
|
||||||
|
|
||||||
color = phong_shade (&spos1,
|
color = phong_shade (&spos1,
|
||||||
&mapvals.viewpoint,
|
&mapvals.viewpoint,
|
||||||
&normal,
|
&normal,
|
||||||
&color,
|
&color,
|
||||||
&mapvals.lightsource.color,
|
&mapvals.lightsource.color,
|
||||||
mapvals.lightsource.type);
|
mapvals.lightsource.type);
|
||||||
|
|
||||||
gimp_rgb_clamp (&color);
|
gimp_rgb_clamp (&color);
|
||||||
}
|
}
|
||||||
|
@ -422,7 +422,7 @@ get_ray_color_sphere (GimpVector3 *pos)
|
||||||
if (mapvals.transparent_background == FALSE && color.a < 1.0)
|
if (mapvals.transparent_background == FALSE && color.a < 1.0)
|
||||||
{
|
{
|
||||||
gimp_rgb_composite (&color, &background,
|
gimp_rgb_composite (&color, &background,
|
||||||
GIMP_RGB_COMPOSITE_BEHIND);
|
GIMP_RGB_COMPOSITE_BEHIND);
|
||||||
}
|
}
|
||||||
|
|
||||||
return color;
|
return color;
|
||||||
|
@ -482,8 +482,8 @@ compute_bounding_box (void)
|
||||||
|
|
||||||
void
|
void
|
||||||
vecmulmat (GimpVector3 *u,
|
vecmulmat (GimpVector3 *u,
|
||||||
GimpVector3 *v,
|
GimpVector3 *v,
|
||||||
gfloat m[16])
|
gfloat m[16])
|
||||||
{
|
{
|
||||||
gfloat v0=v->x, v1=v->y, v2=v->z;
|
gfloat v0=v->x, v1=v->y, v2=v->z;
|
||||||
#define M(row,col) m[col*4+row]
|
#define M(row,col) m[col*4+row]
|
||||||
|
@ -495,8 +495,8 @@ vecmulmat (GimpVector3 *u,
|
||||||
|
|
||||||
void
|
void
|
||||||
rotatemat (gfloat angle,
|
rotatemat (gfloat angle,
|
||||||
GimpVector3 *v,
|
GimpVector3 *v,
|
||||||
gfloat m[16])
|
gfloat m[16])
|
||||||
{
|
{
|
||||||
/* This function contributed by Erich Boleyn (erich@uruk.org) */
|
/* This function contributed by Erich Boleyn (erich@uruk.org) */
|
||||||
gfloat mag, s, c;
|
gfloat mag, s, c;
|
||||||
|
@ -591,8 +591,8 @@ transpose_mat (gfloat m[16])
|
||||||
|
|
||||||
void
|
void
|
||||||
matmul (gfloat a[16],
|
matmul (gfloat a[16],
|
||||||
gfloat b[16],
|
gfloat b[16],
|
||||||
gfloat c[16])
|
gfloat c[16])
|
||||||
{
|
{
|
||||||
gint i, j, k;
|
gint i, j, k;
|
||||||
gfloat value;
|
gfloat value;
|
||||||
|
@ -605,10 +605,10 @@ matmul (gfloat a[16],
|
||||||
{
|
{
|
||||||
for (j = 0; j < 4; j++)
|
for (j = 0; j < 4; j++)
|
||||||
{
|
{
|
||||||
value = 0.0;
|
value = 0.0;
|
||||||
|
|
||||||
for (k = 0; k < 4; k++)
|
for (k = 0; k < 4; k++)
|
||||||
value += A(i,k) * B(k,j);
|
value += A(i,k) * B(k,j);
|
||||||
|
|
||||||
C(i,j) = value;
|
C(i,j) = value;
|
||||||
}
|
}
|
||||||
|
@ -642,11 +642,11 @@ ident_mat (gfloat m[16])
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
intersect_rect (gdouble u,
|
intersect_rect (gdouble u,
|
||||||
gdouble v,
|
gdouble v,
|
||||||
gdouble w,
|
gdouble w,
|
||||||
GimpVector3 viewp,
|
GimpVector3 viewp,
|
||||||
GimpVector3 dir,
|
GimpVector3 dir,
|
||||||
FaceIntersectInfo *face_info)
|
FaceIntersectInfo *face_info)
|
||||||
{
|
{
|
||||||
gboolean result = FALSE;
|
gboolean result = FALSE;
|
||||||
gdouble u2, v2;
|
gdouble u2, v2;
|
||||||
|
@ -675,9 +675,9 @@ intersect_rect (gdouble u,
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
intersect_box (GimpVector3 scale,
|
intersect_box (GimpVector3 scale,
|
||||||
GimpVector3 viewp,
|
GimpVector3 viewp,
|
||||||
GimpVector3 dir,
|
GimpVector3 dir,
|
||||||
FaceIntersectInfo *face_intersect)
|
FaceIntersectInfo *face_intersect)
|
||||||
{
|
{
|
||||||
GimpVector3 v, d, tmp, axis[3];
|
GimpVector3 v, d, tmp, axis[3];
|
||||||
FaceIntersectInfo face_tmp;
|
FaceIntersectInfo face_tmp;
|
||||||
|
@ -693,7 +693,7 @@ intersect_box (GimpVector3 scale,
|
||||||
/* ========== */
|
/* ========== */
|
||||||
|
|
||||||
if (intersect_rect (scale.x, scale.y, scale.z / 2.0,
|
if (intersect_rect (scale.x, scale.y, scale.z / 2.0,
|
||||||
viewp, dir, &face_intersect[i]) == TRUE)
|
viewp, dir, &face_intersect[i]) == TRUE)
|
||||||
{
|
{
|
||||||
face_intersect[i].face = 0;
|
face_intersect[i].face = 0;
|
||||||
gimp_vector3_set (&face_intersect[i++].n, 0.0, 0.0, 1.0);
|
gimp_vector3_set (&face_intersect[i++].n, 0.0, 0.0, 1.0);
|
||||||
|
@ -704,7 +704,7 @@ intersect_box (GimpVector3 scale,
|
||||||
/* ========= */
|
/* ========= */
|
||||||
|
|
||||||
if (intersect_rect (scale.x, scale.y, -scale.z / 2.0,
|
if (intersect_rect (scale.x, scale.y, -scale.z / 2.0,
|
||||||
viewp, dir, &face_intersect[i]) == TRUE)
|
viewp, dir, &face_intersect[i]) == TRUE)
|
||||||
{
|
{
|
||||||
face_intersect[i].face = 1;
|
face_intersect[i].face = 1;
|
||||||
face_intersect[i].u = 1.0 - face_intersect[i].u;
|
face_intersect[i].u = 1.0 - face_intersect[i].u;
|
||||||
|
@ -725,7 +725,7 @@ intersect_box (GimpVector3 scale,
|
||||||
vecmulmat (&d, &dir, m);
|
vecmulmat (&d, &dir, m);
|
||||||
|
|
||||||
if (intersect_rect (scale.x, scale.z, scale.y / 2.0,
|
if (intersect_rect (scale.x, scale.z, scale.y / 2.0,
|
||||||
v, d, &face_intersect[i]) == TRUE)
|
v, d, &face_intersect[i]) == TRUE)
|
||||||
{
|
{
|
||||||
face_intersect[i].face = 2;
|
face_intersect[i].face = 2;
|
||||||
|
|
||||||
|
@ -751,7 +751,7 @@ intersect_box (GimpVector3 scale,
|
||||||
vecmulmat (&d, &dir, m);
|
vecmulmat (&d, &dir, m);
|
||||||
|
|
||||||
if (intersect_rect (scale.x, scale.z, -scale.y / 2.0,
|
if (intersect_rect (scale.x, scale.z, -scale.y / 2.0,
|
||||||
v, d, &face_intersect[i]) == TRUE)
|
v, d, &face_intersect[i]) == TRUE)
|
||||||
{
|
{
|
||||||
face_intersect[i].face = 3;
|
face_intersect[i].face = 3;
|
||||||
|
|
||||||
|
@ -781,7 +781,7 @@ intersect_box (GimpVector3 scale,
|
||||||
vecmulmat (&d, &dir, m);
|
vecmulmat (&d, &dir, m);
|
||||||
|
|
||||||
if (intersect_rect (scale.z, scale.y, scale.x / 2.0,
|
if (intersect_rect (scale.z, scale.y, scale.x / 2.0,
|
||||||
v, d, &face_intersect[i]) == TRUE)
|
v, d, &face_intersect[i]) == TRUE)
|
||||||
{
|
{
|
||||||
face_intersect[i].face = 4;
|
face_intersect[i].face = 4;
|
||||||
|
|
||||||
|
@ -807,7 +807,7 @@ intersect_box (GimpVector3 scale,
|
||||||
vecmulmat (&d, &dir, m);
|
vecmulmat (&d, &dir, m);
|
||||||
|
|
||||||
if (intersect_rect (scale.z, scale.y, -scale.x / 2.0,
|
if (intersect_rect (scale.z, scale.y, -scale.x / 2.0,
|
||||||
v, d, &face_intersect[i]) == TRUE)
|
v, d, &face_intersect[i]) == TRUE)
|
||||||
{
|
{
|
||||||
face_intersect[i].face = 5;
|
face_intersect[i].face = 5;
|
||||||
|
|
||||||
|
@ -905,8 +905,8 @@ get_ray_color_box (GimpVector3 *pos)
|
||||||
}
|
}
|
||||||
|
|
||||||
color = get_box_image_color (face_intersect[0].face,
|
color = get_box_image_color (face_intersect[0].face,
|
||||||
face_intersect[0].u,
|
face_intersect[0].u,
|
||||||
face_intersect[0].v);
|
face_intersect[0].v);
|
||||||
|
|
||||||
/* Check for total transparency... */
|
/* Check for total transparency... */
|
||||||
/* =============================== */
|
/* =============================== */
|
||||||
|
@ -918,17 +918,17 @@ get_ray_color_box (GimpVector3 *pos)
|
||||||
/* =================================== */
|
/* =================================== */
|
||||||
|
|
||||||
color = phong_shade (&face_intersect[0].s,
|
color = phong_shade (&face_intersect[0].s,
|
||||||
&mapvals.viewpoint,
|
&mapvals.viewpoint,
|
||||||
&face_intersect[0].n,
|
&face_intersect[0].n,
|
||||||
&color,
|
&color,
|
||||||
&mapvals.lightsource.color,
|
&mapvals.lightsource.color,
|
||||||
mapvals.lightsource.type);
|
mapvals.lightsource.type);
|
||||||
|
|
||||||
gimp_rgb_clamp (&color);
|
gimp_rgb_clamp (&color);
|
||||||
|
|
||||||
color2 = get_box_image_color (face_intersect[1].face,
|
color2 = get_box_image_color (face_intersect[1].face,
|
||||||
face_intersect[1].u,
|
face_intersect[1].u,
|
||||||
face_intersect[1].v);
|
face_intersect[1].v);
|
||||||
|
|
||||||
/* Make the normal point inwards */
|
/* Make the normal point inwards */
|
||||||
/* ============================= */
|
/* ============================= */
|
||||||
|
@ -936,42 +936,42 @@ get_ray_color_box (GimpVector3 *pos)
|
||||||
gimp_vector3_mul (&face_intersect[1].n, -1.0);
|
gimp_vector3_mul (&face_intersect[1].n, -1.0);
|
||||||
|
|
||||||
color2 = phong_shade (&face_intersect[1].s,
|
color2 = phong_shade (&face_intersect[1].s,
|
||||||
&mapvals.viewpoint,
|
&mapvals.viewpoint,
|
||||||
&face_intersect[1].n,
|
&face_intersect[1].n,
|
||||||
&color2,
|
&color2,
|
||||||
&mapvals.lightsource.color,
|
&mapvals.lightsource.color,
|
||||||
mapvals.lightsource.type);
|
mapvals.lightsource.type);
|
||||||
|
|
||||||
gimp_rgb_clamp (&color2);
|
gimp_rgb_clamp (&color2);
|
||||||
|
|
||||||
if (mapvals.transparent_background == FALSE && color2.a < 1.0)
|
if (mapvals.transparent_background == FALSE && color2.a < 1.0)
|
||||||
{
|
{
|
||||||
gimp_rgb_composite (&color2, &background,
|
gimp_rgb_composite (&color2, &background,
|
||||||
GIMP_RGB_COMPOSITE_BEHIND);
|
GIMP_RGB_COMPOSITE_BEHIND);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Compute a mix of the first and second colors */
|
/* Compute a mix of the first and second colors */
|
||||||
/* ============================================ */
|
/* ============================================ */
|
||||||
|
|
||||||
gimp_rgb_composite (&color, &color2, GIMP_RGB_COMPOSITE_NORMAL);
|
gimp_rgb_composite (&color, &color2, GIMP_RGB_COMPOSITE_NORMAL);
|
||||||
gimp_rgb_clamp (&color);
|
gimp_rgb_clamp (&color);
|
||||||
}
|
}
|
||||||
else if (color.a != 0.0 && mapvals.lightsource.type != NO_LIGHT)
|
else if (color.a != 0.0 && mapvals.lightsource.type != NO_LIGHT)
|
||||||
{
|
{
|
||||||
color = phong_shade (&face_intersect[0].s,
|
color = phong_shade (&face_intersect[0].s,
|
||||||
&mapvals.viewpoint,
|
&mapvals.viewpoint,
|
||||||
&face_intersect[0].n,
|
&face_intersect[0].n,
|
||||||
&color,
|
&color,
|
||||||
&mapvals.lightsource.color,
|
&mapvals.lightsource.color,
|
||||||
mapvals.lightsource.type);
|
mapvals.lightsource.type);
|
||||||
|
|
||||||
gimp_rgb_clamp (&color);
|
gimp_rgb_clamp (&color);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (mapvals.transparent_background == TRUE)
|
if (mapvals.transparent_background == TRUE)
|
||||||
gimp_rgb_set_alpha (&color, 0.0);
|
gimp_rgb_set_alpha (&color, 0.0);
|
||||||
}
|
}
|
||||||
|
|
||||||
return color;
|
return color;
|
||||||
|
@ -979,9 +979,9 @@ get_ray_color_box (GimpVector3 *pos)
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
intersect_circle (GimpVector3 vp,
|
intersect_circle (GimpVector3 vp,
|
||||||
GimpVector3 dir,
|
GimpVector3 dir,
|
||||||
gdouble w,
|
gdouble w,
|
||||||
FaceIntersectInfo *face_info)
|
FaceIntersectInfo *face_info)
|
||||||
{
|
{
|
||||||
gboolean result = FALSE;
|
gboolean result = FALSE;
|
||||||
gdouble r, d;
|
gdouble r, d;
|
||||||
|
@ -1013,8 +1013,8 @@ intersect_circle (GimpVector3 vp,
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
intersect_cylinder (GimpVector3 vp,
|
intersect_cylinder (GimpVector3 vp,
|
||||||
GimpVector3 dir,
|
GimpVector3 dir,
|
||||||
FaceIntersectInfo *face_intersect)
|
FaceIntersectInfo *face_intersect)
|
||||||
{
|
{
|
||||||
gdouble a, b, c, d, e, f, tmp, l;
|
gdouble a, b, c, d, e, f, tmp, l;
|
||||||
gboolean result = FALSE;
|
gboolean result = FALSE;
|
||||||
|
@ -1108,8 +1108,8 @@ intersect_cylinder (GimpVector3 vp,
|
||||||
|
|
||||||
static GimpRGB
|
static GimpRGB
|
||||||
get_cylinder_color (gint face,
|
get_cylinder_color (gint face,
|
||||||
gdouble u,
|
gdouble u,
|
||||||
gdouble v)
|
gdouble v)
|
||||||
{
|
{
|
||||||
GimpRGB color;
|
GimpRGB color;
|
||||||
gint inside;
|
gint inside;
|
||||||
|
@ -1181,8 +1181,8 @@ get_ray_color_cylinder (GimpVector3 *pos)
|
||||||
}
|
}
|
||||||
|
|
||||||
color = get_cylinder_color (face_intersect[0].face,
|
color = get_cylinder_color (face_intersect[0].face,
|
||||||
face_intersect[0].u,
|
face_intersect[0].u,
|
||||||
face_intersect[0].v);
|
face_intersect[0].v);
|
||||||
|
|
||||||
/* Check for transparency... */
|
/* Check for transparency... */
|
||||||
/* ========================= */
|
/* ========================= */
|
||||||
|
@ -1194,17 +1194,17 @@ get_ray_color_cylinder (GimpVector3 *pos)
|
||||||
/* =================================== */
|
/* =================================== */
|
||||||
|
|
||||||
color = phong_shade (&face_intersect[0].s,
|
color = phong_shade (&face_intersect[0].s,
|
||||||
&mapvals.viewpoint,
|
&mapvals.viewpoint,
|
||||||
&face_intersect[0].n,
|
&face_intersect[0].n,
|
||||||
&color,
|
&color,
|
||||||
&mapvals.lightsource.color,
|
&mapvals.lightsource.color,
|
||||||
mapvals.lightsource.type);
|
mapvals.lightsource.type);
|
||||||
|
|
||||||
gimp_rgb_clamp (&color);
|
gimp_rgb_clamp (&color);
|
||||||
|
|
||||||
color2 = get_cylinder_color (face_intersect[1].face,
|
color2 = get_cylinder_color (face_intersect[1].face,
|
||||||
face_intersect[1].u,
|
face_intersect[1].u,
|
||||||
face_intersect[1].v);
|
face_intersect[1].v);
|
||||||
|
|
||||||
/* Make the normal point inwards */
|
/* Make the normal point inwards */
|
||||||
/* ============================= */
|
/* ============================= */
|
||||||
|
@ -1212,42 +1212,42 @@ get_ray_color_cylinder (GimpVector3 *pos)
|
||||||
gimp_vector3_mul (&face_intersect[1].n, -1.0);
|
gimp_vector3_mul (&face_intersect[1].n, -1.0);
|
||||||
|
|
||||||
color2 = phong_shade (&face_intersect[1].s,
|
color2 = phong_shade (&face_intersect[1].s,
|
||||||
&mapvals.viewpoint,
|
&mapvals.viewpoint,
|
||||||
&face_intersect[1].n,
|
&face_intersect[1].n,
|
||||||
&color2,
|
&color2,
|
||||||
&mapvals.lightsource.color,
|
&mapvals.lightsource.color,
|
||||||
mapvals.lightsource.type);
|
mapvals.lightsource.type);
|
||||||
|
|
||||||
gimp_rgb_clamp (&color2);
|
gimp_rgb_clamp (&color2);
|
||||||
|
|
||||||
if (mapvals.transparent_background == FALSE && color2.a < 1.0)
|
if (mapvals.transparent_background == FALSE && color2.a < 1.0)
|
||||||
{
|
{
|
||||||
gimp_rgb_composite (&color2, &background,
|
gimp_rgb_composite (&color2, &background,
|
||||||
GIMP_RGB_COMPOSITE_BEHIND);
|
GIMP_RGB_COMPOSITE_BEHIND);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Compute a mix of the first and second colors */
|
/* Compute a mix of the first and second colors */
|
||||||
/* ============================================ */
|
/* ============================================ */
|
||||||
|
|
||||||
gimp_rgb_composite (&color, &color2, GIMP_RGB_COMPOSITE_NORMAL);
|
gimp_rgb_composite (&color, &color2, GIMP_RGB_COMPOSITE_NORMAL);
|
||||||
gimp_rgb_clamp (&color);
|
gimp_rgb_clamp (&color);
|
||||||
}
|
}
|
||||||
else if (color.a != 0.0 && mapvals.lightsource.type != NO_LIGHT)
|
else if (color.a != 0.0 && mapvals.lightsource.type != NO_LIGHT)
|
||||||
{
|
{
|
||||||
color = phong_shade (&face_intersect[0].s,
|
color = phong_shade (&face_intersect[0].s,
|
||||||
&mapvals.viewpoint,
|
&mapvals.viewpoint,
|
||||||
&face_intersect[0].n,
|
&face_intersect[0].n,
|
||||||
&color,
|
&color,
|
||||||
&mapvals.lightsource.color,
|
&mapvals.lightsource.color,
|
||||||
mapvals.lightsource.type);
|
mapvals.lightsource.type);
|
||||||
|
|
||||||
gimp_rgb_clamp (&color);
|
gimp_rgb_clamp (&color);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (mapvals.transparent_background == TRUE)
|
if (mapvals.transparent_background == TRUE)
|
||||||
gimp_rgb_set_alpha (&color, 0.0);
|
gimp_rgb_set_alpha (&color, 0.0);
|
||||||
}
|
}
|
||||||
|
|
||||||
return color;
|
return color;
|
||||||
|
|
|
@ -12,15 +12,15 @@ GimpRGB get_ray_color_cylinder (GimpVector3 *pos);
|
||||||
void compute_bounding_box (void);
|
void compute_bounding_box (void);
|
||||||
|
|
||||||
void vecmulmat (GimpVector3 *u,
|
void vecmulmat (GimpVector3 *u,
|
||||||
GimpVector3 *v,
|
GimpVector3 *v,
|
||||||
gfloat m[16]);
|
gfloat m[16]);
|
||||||
void rotatemat (gfloat angle,
|
void rotatemat (gfloat angle,
|
||||||
GimpVector3 *v,
|
GimpVector3 *v,
|
||||||
gfloat m[16]);
|
gfloat m[16]);
|
||||||
void transpose_mat (gfloat m[16]);
|
void transpose_mat (gfloat m[16]);
|
||||||
void matmul (gfloat a[16],
|
void matmul (gfloat a[16],
|
||||||
gfloat b[16],
|
gfloat b[16],
|
||||||
gfloat c[16]);
|
gfloat c[16]);
|
||||||
void ident_mat (gfloat m[16]);
|
void ident_mat (gfloat m[16]);
|
||||||
|
|
||||||
#endif /* __MAPOBJECT_SHADE_H__ */
|
#endif /* __MAPOBJECT_SHADE_H__ */
|
||||||
|
|
|
@ -38,28 +38,28 @@ static guint light_hit = FALSE;
|
||||||
static void create_main_notebook (GtkWidget *container);
|
static void create_main_notebook (GtkWidget *container);
|
||||||
|
|
||||||
static gint preview_events (GtkWidget *area,
|
static gint preview_events (GtkWidget *area,
|
||||||
GdkEvent *event);
|
GdkEvent *event);
|
||||||
|
|
||||||
static void update_light_pos_entries (void);
|
static void update_light_pos_entries (void);
|
||||||
|
|
||||||
static void double_adjustment_update (GtkAdjustment *adjustment,
|
static void double_adjustment_update (GtkAdjustment *adjustment,
|
||||||
gpointer data);
|
gpointer data);
|
||||||
|
|
||||||
static void toggle_update (GtkWidget *widget,
|
static void toggle_update (GtkWidget *widget,
|
||||||
gpointer data);
|
gpointer data);
|
||||||
|
|
||||||
static void lightmenu_callback (GtkWidget *widget,
|
static void lightmenu_callback (GtkWidget *widget,
|
||||||
gpointer data);
|
gpointer data);
|
||||||
|
|
||||||
static void preview_callback (GtkWidget *widget,
|
static void preview_callback (GtkWidget *widget,
|
||||||
gpointer data);
|
gpointer data);
|
||||||
|
|
||||||
static gint box_constrain (gint32 image_id,
|
static gint box_constrain (gint32 image_id,
|
||||||
gint32 drawable_id,
|
gint32 drawable_id,
|
||||||
gpointer data);
|
gpointer data);
|
||||||
static gint cylinder_constrain (gint32 image_id,
|
static gint cylinder_constrain (gint32 image_id,
|
||||||
gint32 drawable_id,
|
gint32 drawable_id,
|
||||||
gpointer data);
|
gpointer data);
|
||||||
|
|
||||||
static GtkWidget * create_options_page (void);
|
static GtkWidget * create_options_page (void);
|
||||||
static GtkWidget * create_light_page (void);
|
static GtkWidget * create_light_page (void);
|
||||||
|
@ -75,7 +75,7 @@ static GtkWidget * create_cylinder_page (void);
|
||||||
|
|
||||||
static void
|
static void
|
||||||
double_adjustment_update (GtkAdjustment *adjustment,
|
double_adjustment_update (GtkAdjustment *adjustment,
|
||||||
gpointer data)
|
gpointer data)
|
||||||
{
|
{
|
||||||
gimp_double_adjustment_update (adjustment, data);
|
gimp_double_adjustment_update (adjustment, data);
|
||||||
|
|
||||||
|
@ -92,7 +92,7 @@ update_light_pos_entries (void)
|
||||||
double_adjustment_update,
|
double_adjustment_update,
|
||||||
&mapvals.lightsource.position.x);
|
&mapvals.lightsource.position.x);
|
||||||
gtk_adjustment_set_value (GTK_ADJUSTMENT (xadj),
|
gtk_adjustment_set_value (GTK_ADJUSTMENT (xadj),
|
||||||
mapvals.lightsource.position.x);
|
mapvals.lightsource.position.x);
|
||||||
g_signal_handlers_unblock_by_func (xadj,
|
g_signal_handlers_unblock_by_func (xadj,
|
||||||
double_adjustment_update,
|
double_adjustment_update,
|
||||||
&mapvals.lightsource.position.x);
|
&mapvals.lightsource.position.x);
|
||||||
|
@ -101,7 +101,7 @@ update_light_pos_entries (void)
|
||||||
double_adjustment_update,
|
double_adjustment_update,
|
||||||
&mapvals.lightsource.position.y);
|
&mapvals.lightsource.position.y);
|
||||||
gtk_adjustment_set_value (GTK_ADJUSTMENT (yadj),
|
gtk_adjustment_set_value (GTK_ADJUSTMENT (yadj),
|
||||||
mapvals.lightsource.position.y);
|
mapvals.lightsource.position.y);
|
||||||
g_signal_handlers_unblock_by_func (yadj,
|
g_signal_handlers_unblock_by_func (yadj,
|
||||||
double_adjustment_update,
|
double_adjustment_update,
|
||||||
&mapvals.lightsource.position.y);
|
&mapvals.lightsource.position.y);
|
||||||
|
@ -110,7 +110,7 @@ update_light_pos_entries (void)
|
||||||
double_adjustment_update,
|
double_adjustment_update,
|
||||||
&mapvals.lightsource.position.z);
|
&mapvals.lightsource.position.z);
|
||||||
gtk_adjustment_set_value (GTK_ADJUSTMENT (zadj),
|
gtk_adjustment_set_value (GTK_ADJUSTMENT (zadj),
|
||||||
mapvals.lightsource.position.z);
|
mapvals.lightsource.position.z);
|
||||||
g_signal_handlers_unblock_by_func (zadj,
|
g_signal_handlers_unblock_by_func (zadj,
|
||||||
double_adjustment_update,
|
double_adjustment_update,
|
||||||
&mapvals.lightsource.position.z);
|
&mapvals.lightsource.position.z);
|
||||||
|
@ -122,7 +122,7 @@ update_light_pos_entries (void)
|
||||||
|
|
||||||
static void
|
static void
|
||||||
toggle_update (GtkWidget *widget,
|
toggle_update (GtkWidget *widget,
|
||||||
gpointer data)
|
gpointer data)
|
||||||
{
|
{
|
||||||
gimp_toggle_button_update (widget, data);
|
gimp_toggle_button_update (widget, data);
|
||||||
|
|
||||||
|
@ -136,7 +136,7 @@ toggle_update (GtkWidget *widget,
|
||||||
|
|
||||||
static void
|
static void
|
||||||
lightmenu_callback (GtkWidget *widget,
|
lightmenu_callback (GtkWidget *widget,
|
||||||
gpointer data)
|
gpointer data)
|
||||||
{
|
{
|
||||||
gimp_int_combo_box_get_active (GIMP_INT_COMBO_BOX (widget),
|
gimp_int_combo_box_get_active (GIMP_INT_COMBO_BOX (widget),
|
||||||
(gint *) &mapvals.lightsource.type);
|
(gint *) &mapvals.lightsource.type);
|
||||||
|
@ -170,7 +170,7 @@ lightmenu_callback (GtkWidget *widget,
|
||||||
|
|
||||||
static void
|
static void
|
||||||
mapmenu_callback (GtkWidget *widget,
|
mapmenu_callback (GtkWidget *widget,
|
||||||
gpointer data)
|
gpointer data)
|
||||||
{
|
{
|
||||||
gimp_int_combo_box_get_active (GIMP_INT_COMBO_BOX (widget),
|
gimp_int_combo_box_get_active (GIMP_INT_COMBO_BOX (widget),
|
||||||
(gint *) &mapvals.maptype);
|
(gint *) &mapvals.maptype);
|
||||||
|
@ -207,10 +207,10 @@ mapmenu_callback (GtkWidget *widget,
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!cylinder_page)
|
if (!cylinder_page)
|
||||||
{
|
{
|
||||||
cylinder_page = create_cylinder_page ();
|
cylinder_page = create_cylinder_page ();
|
||||||
g_object_ref (cylinder_page);
|
g_object_ref (cylinder_page);
|
||||||
}
|
}
|
||||||
gtk_notebook_append_page (options_note_book,
|
gtk_notebook_append_page (options_note_book,
|
||||||
cylinder_page,
|
cylinder_page,
|
||||||
gtk_label_new_with_mnemonic (_("C_ylinder")));
|
gtk_label_new_with_mnemonic (_("C_ylinder")));
|
||||||
|
@ -237,7 +237,7 @@ mapmenu_callback (GtkWidget *widget,
|
||||||
|
|
||||||
static void
|
static void
|
||||||
preview_callback (GtkWidget *widget,
|
preview_callback (GtkWidget *widget,
|
||||||
gpointer data)
|
gpointer data)
|
||||||
{
|
{
|
||||||
compute_preview_image ();
|
compute_preview_image ();
|
||||||
|
|
||||||
|
@ -261,26 +261,26 @@ zoomed_callback (GimpZoomModel *model)
|
||||||
|
|
||||||
static gint
|
static gint
|
||||||
box_constrain (gint32 image_id,
|
box_constrain (gint32 image_id,
|
||||||
gint32 drawable_id,
|
gint32 drawable_id,
|
||||||
gpointer data)
|
gpointer data)
|
||||||
{
|
{
|
||||||
if (drawable_id == -1)
|
if (drawable_id == -1)
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
|
||||||
return (gimp_drawable_is_rgb (drawable_id) &&
|
return (gimp_drawable_is_rgb (drawable_id) &&
|
||||||
!gimp_drawable_is_indexed (drawable_id));
|
!gimp_drawable_is_indexed (drawable_id));
|
||||||
}
|
}
|
||||||
|
|
||||||
static gint
|
static gint
|
||||||
cylinder_constrain (gint32 image_id,
|
cylinder_constrain (gint32 image_id,
|
||||||
gint32 drawable_id,
|
gint32 drawable_id,
|
||||||
gpointer data)
|
gpointer data)
|
||||||
{
|
{
|
||||||
if (drawable_id == -1)
|
if (drawable_id == -1)
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
|
||||||
return (gimp_drawable_is_rgb (drawable_id) &&
|
return (gimp_drawable_is_rgb (drawable_id) &&
|
||||||
!gimp_drawable_is_indexed (drawable_id));
|
!gimp_drawable_is_indexed (drawable_id));
|
||||||
}
|
}
|
||||||
|
|
||||||
/******************************/
|
/******************************/
|
||||||
|
@ -289,7 +289,7 @@ cylinder_constrain (gint32 image_id,
|
||||||
|
|
||||||
static gint
|
static gint
|
||||||
preview_events (GtkWidget *area,
|
preview_events (GtkWidget *area,
|
||||||
GdkEvent *event)
|
GdkEvent *event)
|
||||||
{
|
{
|
||||||
HVect pos;
|
HVect pos;
|
||||||
/* HMatrix RotMat;
|
/* HMatrix RotMat;
|
||||||
|
@ -308,9 +308,9 @@ preview_events (GtkWidget *area,
|
||||||
if (light_hit == FALSE)
|
if (light_hit == FALSE)
|
||||||
{
|
{
|
||||||
pos.x = -(2.0 * (gdouble) event->button.x /
|
pos.x = -(2.0 * (gdouble) event->button.x /
|
||||||
(gdouble) PREVIEW_WIDTH - 1.0);
|
(gdouble) PREVIEW_WIDTH - 1.0);
|
||||||
pos.y = (2.0 * (gdouble) event->button.y /
|
pos.y = (2.0 * (gdouble) event->button.y /
|
||||||
(gdouble) PREVIEW_HEIGHT - 1.0);
|
(gdouble) PREVIEW_HEIGHT - 1.0);
|
||||||
/*ArcBall_Mouse(pos);
|
/*ArcBall_Mouse(pos);
|
||||||
ArcBall_BeginDrag(); */
|
ArcBall_BeginDrag(); */
|
||||||
}
|
}
|
||||||
|
@ -319,17 +319,17 @@ preview_events (GtkWidget *area,
|
||||||
|
|
||||||
case GDK_BUTTON_RELEASE:
|
case GDK_BUTTON_RELEASE:
|
||||||
if (light_hit == TRUE)
|
if (light_hit == TRUE)
|
||||||
{
|
{
|
||||||
compute_preview_image ();
|
compute_preview_image ();
|
||||||
|
|
||||||
gtk_widget_queue_draw (previewarea);
|
gtk_widget_queue_draw (previewarea);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
pos.x = -(2.0 * (gdouble) event->button.x /
|
pos.x = -(2.0 * (gdouble) event->button.x /
|
||||||
(gdouble) PREVIEW_WIDTH - 1.0);
|
(gdouble) PREVIEW_WIDTH - 1.0);
|
||||||
pos.y = (2.0 * (gdouble) event->button.y /
|
pos.y = (2.0 * (gdouble) event->button.y /
|
||||||
(gdouble) PREVIEW_HEIGHT - 1.0);
|
(gdouble) PREVIEW_HEIGHT - 1.0);
|
||||||
/*ArcBall_Mouse(pos);
|
/*ArcBall_Mouse(pos);
|
||||||
ArcBall_EndDrag(); */
|
ArcBall_EndDrag(); */
|
||||||
}
|
}
|
||||||
|
@ -350,10 +350,10 @@ preview_events (GtkWidget *area,
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
pos.x = -(2.0 * (gdouble) event->motion.x /
|
pos.x = -(2.0 * (gdouble) event->motion.x /
|
||||||
(gdouble) PREVIEW_WIDTH - 1.0);
|
(gdouble) PREVIEW_WIDTH - 1.0);
|
||||||
pos.y = (2.0 * (gdouble) event->motion.y /
|
pos.y = (2.0 * (gdouble) event->motion.y /
|
||||||
(gdouble) PREVIEW_HEIGHT - 1.0);
|
(gdouble) PREVIEW_HEIGHT - 1.0);
|
||||||
/* ArcBall_Mouse(pos);
|
/* ArcBall_Mouse(pos);
|
||||||
ArcBall_Update();
|
ArcBall_Update();
|
||||||
ArcBall_Values(&a,&b,&c);
|
ArcBall_Values(&a,&b,&c);
|
||||||
|
@ -366,7 +366,7 @@ preview_events (GtkWidget *area,
|
||||||
if (Beta<-180) Beta+=360;
|
if (Beta<-180) Beta+=360;
|
||||||
if (Gamma>180) Gamma-=360;
|
if (Gamma>180) Gamma-=360;
|
||||||
if (Gamma<-180) Gamma+=360;
|
if (Gamma<-180) Gamma+=360;
|
||||||
UpdateAngleSliders(); */
|
UpdateAngleSliders(); */
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -434,7 +434,7 @@ create_options_page (void)
|
||||||
|
|
||||||
toggle = gtk_check_button_new_with_label (_("Transparent background"));
|
toggle = gtk_check_button_new_with_label (_("Transparent background"));
|
||||||
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (toggle),
|
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (toggle),
|
||||||
mapvals.transparent_background);
|
mapvals.transparent_background);
|
||||||
gtk_box_pack_start (GTK_BOX (vbox), toggle, FALSE, FALSE, 0);
|
gtk_box_pack_start (GTK_BOX (vbox), toggle, FALSE, FALSE, 0);
|
||||||
gtk_widget_show (toggle);
|
gtk_widget_show (toggle);
|
||||||
|
|
||||||
|
@ -443,11 +443,11 @@ create_options_page (void)
|
||||||
&mapvals.transparent_background);
|
&mapvals.transparent_background);
|
||||||
|
|
||||||
gimp_help_set_help_data (toggle,
|
gimp_help_set_help_data (toggle,
|
||||||
_("Make image transparent outside object"), NULL);
|
_("Make image transparent outside object"), NULL);
|
||||||
|
|
||||||
toggle = gtk_check_button_new_with_label (_("Tile source image"));
|
toggle = gtk_check_button_new_with_label (_("Tile source image"));
|
||||||
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (toggle),
|
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (toggle),
|
||||||
mapvals.tiled);
|
mapvals.tiled);
|
||||||
gtk_box_pack_start (GTK_BOX (vbox), toggle, FALSE, FALSE, 0);
|
gtk_box_pack_start (GTK_BOX (vbox), toggle, FALSE, FALSE, 0);
|
||||||
gtk_widget_show (toggle);
|
gtk_widget_show (toggle);
|
||||||
|
|
||||||
|
@ -456,12 +456,12 @@ create_options_page (void)
|
||||||
&mapvals.tiled);
|
&mapvals.tiled);
|
||||||
|
|
||||||
gimp_help_set_help_data (toggle,
|
gimp_help_set_help_data (toggle,
|
||||||
_("Tile source image: useful for infinite planes"),
|
_("Tile source image: useful for infinite planes"),
|
||||||
NULL);
|
NULL);
|
||||||
|
|
||||||
toggle = gtk_check_button_new_with_label (_("Create new image"));
|
toggle = gtk_check_button_new_with_label (_("Create new image"));
|
||||||
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (toggle),
|
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (toggle),
|
||||||
mapvals.create_new_image);
|
mapvals.create_new_image);
|
||||||
gtk_box_pack_start (GTK_BOX (vbox), toggle, FALSE, FALSE, 0);
|
gtk_box_pack_start (GTK_BOX (vbox), toggle, FALSE, FALSE, 0);
|
||||||
gtk_widget_show (toggle);
|
gtk_widget_show (toggle);
|
||||||
|
|
||||||
|
@ -470,11 +470,11 @@ create_options_page (void)
|
||||||
&mapvals.create_new_image);
|
&mapvals.create_new_image);
|
||||||
|
|
||||||
gimp_help_set_help_data (toggle,
|
gimp_help_set_help_data (toggle,
|
||||||
_("Create a new image when applying filter"), NULL);
|
_("Create a new image when applying filter"), NULL);
|
||||||
|
|
||||||
toggle = gtk_check_button_new_with_label (_("Create new layer"));
|
toggle = gtk_check_button_new_with_label (_("Create new layer"));
|
||||||
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (toggle),
|
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (toggle),
|
||||||
mapvals.create_new_layer);
|
mapvals.create_new_layer);
|
||||||
gtk_box_pack_start (GTK_BOX (vbox), toggle, FALSE, FALSE, 0);
|
gtk_box_pack_start (GTK_BOX (vbox), toggle, FALSE, FALSE, 0);
|
||||||
gtk_widget_show (toggle);
|
gtk_widget_show (toggle);
|
||||||
|
|
||||||
|
@ -483,7 +483,7 @@ create_options_page (void)
|
||||||
&mapvals.create_new_layer);
|
&mapvals.create_new_layer);
|
||||||
|
|
||||||
gimp_help_set_help_data (toggle,
|
gimp_help_set_help_data (toggle,
|
||||||
_("Create a new layer when applying filter"), NULL);
|
_("Create a new layer when applying filter"), NULL);
|
||||||
|
|
||||||
/* Antialiasing options */
|
/* Antialiasing options */
|
||||||
|
|
||||||
|
@ -493,7 +493,7 @@ create_options_page (void)
|
||||||
|
|
||||||
toggle = gtk_check_button_new_with_mnemonic (_("Enable _antialiasing"));
|
toggle = gtk_check_button_new_with_mnemonic (_("Enable _antialiasing"));
|
||||||
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (toggle),
|
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (toggle),
|
||||||
mapvals.antialiasing);
|
mapvals.antialiasing);
|
||||||
gtk_frame_set_label_widget (GTK_FRAME (frame), toggle);
|
gtk_frame_set_label_widget (GTK_FRAME (frame), toggle);
|
||||||
gtk_widget_show (toggle);
|
gtk_widget_show (toggle);
|
||||||
|
|
||||||
|
@ -502,8 +502,8 @@ create_options_page (void)
|
||||||
&mapvals.antialiasing);
|
&mapvals.antialiasing);
|
||||||
|
|
||||||
gimp_help_set_help_data (toggle,
|
gimp_help_set_help_data (toggle,
|
||||||
_("Enable/disable jagged edges removal "
|
_("Enable/disable jagged edges removal "
|
||||||
"(antialiasing)"), NULL);
|
"(antialiasing)"), NULL);
|
||||||
|
|
||||||
table = gtk_table_new (2, 3, FALSE);
|
table = gtk_table_new (2, 3, FALSE);
|
||||||
gtk_table_set_col_spacings (GTK_TABLE (table), 6);
|
gtk_table_set_col_spacings (GTK_TABLE (table), 6);
|
||||||
|
@ -515,28 +515,28 @@ create_options_page (void)
|
||||||
g_object_set_data (G_OBJECT (toggle), "set_sensitive", table);
|
g_object_set_data (G_OBJECT (toggle), "set_sensitive", table);
|
||||||
|
|
||||||
adj = gimp_scale_entry_new (GTK_TABLE (table), 0, 0,
|
adj = gimp_scale_entry_new (GTK_TABLE (table), 0, 0,
|
||||||
_("_Depth:"), 0, 0,
|
_("_Depth:"), 0, 0,
|
||||||
mapvals.maxdepth, 1.0, 5.0, 0.1, 1.0,
|
mapvals.maxdepth, 1.0, 5.0, 0.1, 1.0,
|
||||||
1, TRUE, 0, 0,
|
1, TRUE, 0, 0,
|
||||||
_("Antialiasing quality. Higher is better, "
|
_("Antialiasing quality. Higher is better, "
|
||||||
"but slower"), NULL);
|
"but slower"), NULL);
|
||||||
g_signal_connect (adj, "value-changed",
|
g_signal_connect (adj, "value-changed",
|
||||||
G_CALLBACK (gimp_double_adjustment_update),
|
G_CALLBACK (gimp_double_adjustment_update),
|
||||||
&mapvals.maxdepth);
|
&mapvals.maxdepth);
|
||||||
|
|
||||||
spinbutton = gimp_spin_button_new (&adj, mapvals.pixeltreshold,
|
spinbutton = gimp_spin_button_new (&adj, mapvals.pixeltreshold,
|
||||||
0.001, 1000, 0.1, 1, 0, 0, 3);
|
0.001, 1000, 0.1, 1, 0, 0, 3);
|
||||||
gimp_table_attach_aligned (GTK_TABLE (table), 0, 1,
|
gimp_table_attach_aligned (GTK_TABLE (table), 0, 1,
|
||||||
_("_Threshold:"), 0.0, 0.5,
|
_("_Threshold:"), 0.0, 0.5,
|
||||||
spinbutton, 1, TRUE);
|
spinbutton, 1, TRUE);
|
||||||
|
|
||||||
g_signal_connect (adj, "value-changed",
|
g_signal_connect (adj, "value-changed",
|
||||||
G_CALLBACK (double_adjustment_update),
|
G_CALLBACK (double_adjustment_update),
|
||||||
&mapvals.pixeltreshold);
|
&mapvals.pixeltreshold);
|
||||||
|
|
||||||
gimp_help_set_help_data (spinbutton,
|
gimp_help_set_help_data (spinbutton,
|
||||||
_("Stop when pixel differences are smaller than "
|
_("Stop when pixel differences are smaller than "
|
||||||
"this value"), NULL);
|
"this value"), NULL);
|
||||||
|
|
||||||
gtk_widget_show (page);
|
gtk_widget_show (page);
|
||||||
|
|
||||||
|
@ -577,8 +577,8 @@ create_light_page (void)
|
||||||
gimp_int_combo_box_set_active (GIMP_INT_COMBO_BOX (combo),
|
gimp_int_combo_box_set_active (GIMP_INT_COMBO_BOX (combo),
|
||||||
mapvals.lightsource.type);
|
mapvals.lightsource.type);
|
||||||
gimp_table_attach_aligned (GTK_TABLE (table), 0, 0,
|
gimp_table_attach_aligned (GTK_TABLE (table), 0, 0,
|
||||||
_("Lightsource type:"), 0.0, 0.5,
|
_("Lightsource type:"), 0.0, 0.5,
|
||||||
combo, 1, FALSE);
|
combo, 1, FALSE);
|
||||||
|
|
||||||
g_signal_connect (combo, "changed",
|
g_signal_connect (combo, "changed",
|
||||||
G_CALLBACK (lightmenu_callback),
|
G_CALLBACK (lightmenu_callback),
|
||||||
|
@ -587,19 +587,19 @@ create_light_page (void)
|
||||||
gimp_help_set_help_data (combo, _("Type of light source to apply"), NULL);
|
gimp_help_set_help_data (combo, _("Type of light source to apply"), NULL);
|
||||||
|
|
||||||
colorbutton = gimp_color_button_new (_("Select lightsource color"),
|
colorbutton = gimp_color_button_new (_("Select lightsource color"),
|
||||||
64, 16,
|
64, 16,
|
||||||
&mapvals.lightsource.color,
|
&mapvals.lightsource.color,
|
||||||
GIMP_COLOR_AREA_FLAT);
|
GIMP_COLOR_AREA_FLAT);
|
||||||
gimp_table_attach_aligned (GTK_TABLE (table), 0, 1,
|
gimp_table_attach_aligned (GTK_TABLE (table), 0, 1,
|
||||||
_("Lightsource color:"), 0.0, 0.5,
|
_("Lightsource color:"), 0.0, 0.5,
|
||||||
colorbutton, 1, FALSE);
|
colorbutton, 1, FALSE);
|
||||||
|
|
||||||
g_signal_connect (colorbutton, "color-changed",
|
g_signal_connect (colorbutton, "color-changed",
|
||||||
G_CALLBACK (gimp_color_button_get_color),
|
G_CALLBACK (gimp_color_button_get_color),
|
||||||
&mapvals.lightsource.color);
|
&mapvals.lightsource.color);
|
||||||
|
|
||||||
gimp_help_set_help_data (colorbutton,
|
gimp_help_set_help_data (colorbutton,
|
||||||
_("Set light source color"), NULL);
|
_("Set light source color"), NULL);
|
||||||
|
|
||||||
pointlightwid = gimp_frame_new (_("Position"));
|
pointlightwid = gimp_frame_new (_("Position"));
|
||||||
gtk_box_pack_start (GTK_BOX (page), pointlightwid, FALSE, FALSE, 0);
|
gtk_box_pack_start (GTK_BOX (page), pointlightwid, FALSE, FALSE, 0);
|
||||||
|
@ -614,46 +614,46 @@ create_light_page (void)
|
||||||
gtk_widget_show (table);
|
gtk_widget_show (table);
|
||||||
|
|
||||||
spinbutton = gimp_spin_button_new (&xadj, mapvals.lightsource.position.x,
|
spinbutton = gimp_spin_button_new (&xadj, mapvals.lightsource.position.x,
|
||||||
-G_MAXFLOAT, G_MAXFLOAT,
|
-G_MAXFLOAT, G_MAXFLOAT,
|
||||||
0.1, 1.0, 0.0, 0.0, 2);
|
0.1, 1.0, 0.0, 0.0, 2);
|
||||||
gimp_table_attach_aligned (GTK_TABLE (table), 0, 0,
|
gimp_table_attach_aligned (GTK_TABLE (table), 0, 0,
|
||||||
_("X:"), 0.0, 0.5,
|
_("X:"), 0.0, 0.5,
|
||||||
spinbutton, 1, TRUE);
|
spinbutton, 1, TRUE);
|
||||||
|
|
||||||
g_signal_connect (xadj, "value-changed",
|
g_signal_connect (xadj, "value-changed",
|
||||||
G_CALLBACK (double_adjustment_update),
|
G_CALLBACK (double_adjustment_update),
|
||||||
&mapvals.lightsource.position.x);
|
&mapvals.lightsource.position.x);
|
||||||
|
|
||||||
gimp_help_set_help_data (spinbutton,
|
gimp_help_set_help_data (spinbutton,
|
||||||
_("Light source X position in XYZ space"), NULL);
|
_("Light source X position in XYZ space"), NULL);
|
||||||
|
|
||||||
spinbutton = gimp_spin_button_new (&yadj, mapvals.lightsource.position.y,
|
spinbutton = gimp_spin_button_new (&yadj, mapvals.lightsource.position.y,
|
||||||
-G_MAXFLOAT, G_MAXFLOAT,
|
-G_MAXFLOAT, G_MAXFLOAT,
|
||||||
0.1, 1.0, 0.0, 0.0, 2);
|
0.1, 1.0, 0.0, 0.0, 2);
|
||||||
gimp_table_attach_aligned (GTK_TABLE (table), 0, 1,
|
gimp_table_attach_aligned (GTK_TABLE (table), 0, 1,
|
||||||
_("Y:"), 0.0, 0.5,
|
_("Y:"), 0.0, 0.5,
|
||||||
spinbutton, 1, TRUE);
|
spinbutton, 1, TRUE);
|
||||||
|
|
||||||
g_signal_connect (yadj, "value-changed",
|
g_signal_connect (yadj, "value-changed",
|
||||||
G_CALLBACK (double_adjustment_update),
|
G_CALLBACK (double_adjustment_update),
|
||||||
&mapvals.lightsource.position.y);
|
&mapvals.lightsource.position.y);
|
||||||
|
|
||||||
gimp_help_set_help_data (spinbutton,
|
gimp_help_set_help_data (spinbutton,
|
||||||
_("Light source Y position in XYZ space"), NULL);
|
_("Light source Y position in XYZ space"), NULL);
|
||||||
|
|
||||||
spinbutton = gimp_spin_button_new (&zadj, mapvals.lightsource.position.z,
|
spinbutton = gimp_spin_button_new (&zadj, mapvals.lightsource.position.z,
|
||||||
-G_MAXFLOAT, G_MAXFLOAT,
|
-G_MAXFLOAT, G_MAXFLOAT,
|
||||||
0.1, 1.0, 0.0, 0.0, 2);
|
0.1, 1.0, 0.0, 0.0, 2);
|
||||||
gimp_table_attach_aligned (GTK_TABLE (table), 0, 2,
|
gimp_table_attach_aligned (GTK_TABLE (table), 0, 2,
|
||||||
_("Z:"), 0.0, 0.5,
|
_("Z:"), 0.0, 0.5,
|
||||||
spinbutton, 1, TRUE);
|
spinbutton, 1, TRUE);
|
||||||
|
|
||||||
g_signal_connect (zadj, "value-changed",
|
g_signal_connect (zadj, "value-changed",
|
||||||
G_CALLBACK (double_adjustment_update),
|
G_CALLBACK (double_adjustment_update),
|
||||||
&mapvals.lightsource.position.z);
|
&mapvals.lightsource.position.z);
|
||||||
|
|
||||||
gimp_help_set_help_data (spinbutton,
|
gimp_help_set_help_data (spinbutton,
|
||||||
_("Light source Z position in XYZ space"), NULL);
|
_("Light source Z position in XYZ space"), NULL);
|
||||||
|
|
||||||
|
|
||||||
dirlightwid = gimp_frame_new (_("Direction Vector"));
|
dirlightwid = gimp_frame_new (_("Direction Vector"));
|
||||||
|
@ -669,43 +669,43 @@ create_light_page (void)
|
||||||
gtk_widget_show (table);
|
gtk_widget_show (table);
|
||||||
|
|
||||||
spinbutton = gimp_spin_button_new (&adj, mapvals.lightsource.direction.x,
|
spinbutton = gimp_spin_button_new (&adj, mapvals.lightsource.direction.x,
|
||||||
-1.0, 1.0, 0.01, 0.1, 0.0, 0.0, 2);
|
-1.0, 1.0, 0.01, 0.1, 0.0, 0.0, 2);
|
||||||
gimp_table_attach_aligned (GTK_TABLE (table), 0, 0,
|
gimp_table_attach_aligned (GTK_TABLE (table), 0, 0,
|
||||||
_("X:"), 0.0, 0.5,
|
_("X:"), 0.0, 0.5,
|
||||||
spinbutton, 1, TRUE);
|
spinbutton, 1, TRUE);
|
||||||
|
|
||||||
g_signal_connect (adj, "value-changed",
|
g_signal_connect (adj, "value-changed",
|
||||||
G_CALLBACK (double_adjustment_update),
|
G_CALLBACK (double_adjustment_update),
|
||||||
&mapvals.lightsource.direction.x);
|
&mapvals.lightsource.direction.x);
|
||||||
|
|
||||||
gimp_help_set_help_data (spinbutton,
|
gimp_help_set_help_data (spinbutton,
|
||||||
_("Light source X direction in XYZ space"), NULL);
|
_("Light source X direction in XYZ space"), NULL);
|
||||||
|
|
||||||
spinbutton = gimp_spin_button_new (&adj, mapvals.lightsource.direction.y,
|
spinbutton = gimp_spin_button_new (&adj, mapvals.lightsource.direction.y,
|
||||||
-1.0, 1.0, 0.01, 0.1, 0.0, 0.0, 2);
|
-1.0, 1.0, 0.01, 0.1, 0.0, 0.0, 2);
|
||||||
gimp_table_attach_aligned (GTK_TABLE (table), 0, 1,
|
gimp_table_attach_aligned (GTK_TABLE (table), 0, 1,
|
||||||
_("Y:"), 0.0, 0.5,
|
_("Y:"), 0.0, 0.5,
|
||||||
spinbutton, 1, TRUE);
|
spinbutton, 1, TRUE);
|
||||||
|
|
||||||
g_signal_connect (adj, "value-changed",
|
g_signal_connect (adj, "value-changed",
|
||||||
G_CALLBACK (double_adjustment_update),
|
G_CALLBACK (double_adjustment_update),
|
||||||
&mapvals.lightsource.direction.y);
|
&mapvals.lightsource.direction.y);
|
||||||
|
|
||||||
gimp_help_set_help_data (spinbutton,
|
gimp_help_set_help_data (spinbutton,
|
||||||
_("Light source Y direction in XYZ space"), NULL);
|
_("Light source Y direction in XYZ space"), NULL);
|
||||||
|
|
||||||
spinbutton = gimp_spin_button_new (&adj, mapvals.lightsource.direction.z,
|
spinbutton = gimp_spin_button_new (&adj, mapvals.lightsource.direction.z,
|
||||||
-1.0, 1.0, 0.01, 0.1, 0.0, 0.0, 2);
|
-1.0, 1.0, 0.01, 0.1, 0.0, 0.0, 2);
|
||||||
gimp_table_attach_aligned (GTK_TABLE (table), 0, 2,
|
gimp_table_attach_aligned (GTK_TABLE (table), 0, 2,
|
||||||
_("Z:"), 0.0, 0.5,
|
_("Z:"), 0.0, 0.5,
|
||||||
spinbutton, 1, TRUE);
|
spinbutton, 1, TRUE);
|
||||||
|
|
||||||
g_signal_connect (adj, "value-changed",
|
g_signal_connect (adj, "value-changed",
|
||||||
G_CALLBACK (double_adjustment_update),
|
G_CALLBACK (double_adjustment_update),
|
||||||
&mapvals.lightsource.direction.z);
|
&mapvals.lightsource.direction.z);
|
||||||
|
|
||||||
gimp_help_set_help_data (spinbutton,
|
gimp_help_set_help_data (spinbutton,
|
||||||
_("Light source Z direction in XYZ space"), NULL);
|
_("Light source Z direction in XYZ space"), NULL);
|
||||||
|
|
||||||
gtk_widget_show (page);
|
gtk_widget_show (page);
|
||||||
|
|
||||||
|
@ -756,9 +756,9 @@ create_material_page (void)
|
||||||
gtk_size_group_add_widget (group, label);
|
gtk_size_group_add_widget (group, label);
|
||||||
|
|
||||||
spinbutton = gimp_spin_button_new (&adj, mapvals.material.ambient_int,
|
spinbutton = gimp_spin_button_new (&adj, mapvals.material.ambient_int,
|
||||||
0, G_MAXFLOAT, 0.1, 1.0, 0.0, 0.0, 2);
|
0, G_MAXFLOAT, 0.1, 1.0, 0.0, 0.0, 2);
|
||||||
gtk_table_attach (GTK_TABLE (table), spinbutton, 2, 3, 0, 1,
|
gtk_table_attach (GTK_TABLE (table), spinbutton, 2, 3, 0, 1,
|
||||||
GTK_SHRINK | GTK_FILL, GTK_SHRINK | GTK_FILL, 0, 0);
|
GTK_SHRINK | GTK_FILL, GTK_SHRINK | GTK_FILL, 0, 0);
|
||||||
gtk_widget_show (spinbutton);
|
gtk_widget_show (spinbutton);
|
||||||
|
|
||||||
g_signal_connect (adj, "value-changed",
|
g_signal_connect (adj, "value-changed",
|
||||||
|
@ -766,13 +766,13 @@ create_material_page (void)
|
||||||
&mapvals.material.ambient_int);
|
&mapvals.material.ambient_int);
|
||||||
|
|
||||||
gimp_help_set_help_data (spinbutton,
|
gimp_help_set_help_data (spinbutton,
|
||||||
_("Amount of original color to show where no "
|
_("Amount of original color to show where no "
|
||||||
"direct light falls"), NULL);
|
"direct light falls"), NULL);
|
||||||
|
|
||||||
image = gtk_image_new_from_stock (STOCK_INTENSITY_AMBIENT_HIGH,
|
image = gtk_image_new_from_stock (STOCK_INTENSITY_AMBIENT_HIGH,
|
||||||
GTK_ICON_SIZE_BUTTON);
|
GTK_ICON_SIZE_BUTTON);
|
||||||
gtk_table_attach (GTK_TABLE (table), image, 3, 4, 0, 1,
|
gtk_table_attach (GTK_TABLE (table), image, 3, 4, 0, 1,
|
||||||
GTK_SHRINK | GTK_FILL, GTK_SHRINK | GTK_FILL, 0, 0);
|
GTK_SHRINK | GTK_FILL, GTK_SHRINK | GTK_FILL, 0, 0);
|
||||||
gtk_widget_show (image);
|
gtk_widget_show (image);
|
||||||
|
|
||||||
/* Diffuse intensity */
|
/* Diffuse intensity */
|
||||||
|
@ -785,9 +785,9 @@ create_material_page (void)
|
||||||
gtk_size_group_add_widget (group, label);
|
gtk_size_group_add_widget (group, label);
|
||||||
|
|
||||||
spinbutton = gimp_spin_button_new (&adj, mapvals.material.diffuse_int,
|
spinbutton = gimp_spin_button_new (&adj, mapvals.material.diffuse_int,
|
||||||
0, G_MAXFLOAT, 0.1, 1.0, 0.0, 0.0, 2);
|
0, G_MAXFLOAT, 0.1, 1.0, 0.0, 0.0, 2);
|
||||||
gtk_table_attach (GTK_TABLE (table), spinbutton, 2, 3, 1, 2,
|
gtk_table_attach (GTK_TABLE (table), spinbutton, 2, 3, 1, 2,
|
||||||
GTK_SHRINK | GTK_FILL, GTK_SHRINK | GTK_FILL, 0, 0);
|
GTK_SHRINK | GTK_FILL, GTK_SHRINK | GTK_FILL, 0, 0);
|
||||||
gtk_widget_show (spinbutton);
|
gtk_widget_show (spinbutton);
|
||||||
|
|
||||||
g_signal_connect (adj, "value-changed",
|
g_signal_connect (adj, "value-changed",
|
||||||
|
@ -795,13 +795,13 @@ create_material_page (void)
|
||||||
&mapvals.material.diffuse_int);
|
&mapvals.material.diffuse_int);
|
||||||
|
|
||||||
gimp_help_set_help_data (spinbutton,
|
gimp_help_set_help_data (spinbutton,
|
||||||
_("Intensity of original color when lit by a light "
|
_("Intensity of original color when lit by a light "
|
||||||
"source"), NULL);
|
"source"), NULL);
|
||||||
|
|
||||||
image = gtk_image_new_from_stock (STOCK_INTENSITY_DIFFUSE_HIGH,
|
image = gtk_image_new_from_stock (STOCK_INTENSITY_DIFFUSE_HIGH,
|
||||||
GTK_ICON_SIZE_BUTTON);
|
GTK_ICON_SIZE_BUTTON);
|
||||||
gtk_table_attach (GTK_TABLE (table), image, 3, 4, 1, 2,
|
gtk_table_attach (GTK_TABLE (table), image, 3, 4, 1, 2,
|
||||||
GTK_SHRINK | GTK_FILL, GTK_SHRINK | GTK_FILL, 0, 0);
|
GTK_SHRINK | GTK_FILL, GTK_SHRINK | GTK_FILL, 0, 0);
|
||||||
gtk_widget_show (image);
|
gtk_widget_show (image);
|
||||||
|
|
||||||
frame = gimp_frame_new (_("Reflectivity"));
|
frame = gimp_frame_new (_("Reflectivity"));
|
||||||
|
@ -828,9 +828,9 @@ create_material_page (void)
|
||||||
gtk_size_group_add_widget (group, label);
|
gtk_size_group_add_widget (group, label);
|
||||||
|
|
||||||
spinbutton = gimp_spin_button_new (&adj, mapvals.material.diffuse_ref,
|
spinbutton = gimp_spin_button_new (&adj, mapvals.material.diffuse_ref,
|
||||||
0, G_MAXFLOAT, 0.1, 1.0, 0.0, 0.0, 2);
|
0, G_MAXFLOAT, 0.1, 1.0, 0.0, 0.0, 2);
|
||||||
gtk_table_attach (GTK_TABLE (table), spinbutton, 2, 3, 0, 1,
|
gtk_table_attach (GTK_TABLE (table), spinbutton, 2, 3, 0, 1,
|
||||||
GTK_SHRINK | GTK_FILL, GTK_SHRINK | GTK_FILL, 0, 0);
|
GTK_SHRINK | GTK_FILL, GTK_SHRINK | GTK_FILL, 0, 0);
|
||||||
gtk_widget_show (spinbutton);
|
gtk_widget_show (spinbutton);
|
||||||
|
|
||||||
g_signal_connect (adj, "value-changed",
|
g_signal_connect (adj, "value-changed",
|
||||||
|
@ -838,13 +838,13 @@ create_material_page (void)
|
||||||
&mapvals.material.diffuse_ref);
|
&mapvals.material.diffuse_ref);
|
||||||
|
|
||||||
gimp_help_set_help_data (spinbutton,
|
gimp_help_set_help_data (spinbutton,
|
||||||
_("Higher values makes the object reflect more "
|
_("Higher values makes the object reflect more "
|
||||||
"light (appear lighter)"), NULL);
|
"light (appear lighter)"), NULL);
|
||||||
|
|
||||||
image = gtk_image_new_from_stock (STOCK_REFLECTIVITY_DIFFUSE_HIGH,
|
image = gtk_image_new_from_stock (STOCK_REFLECTIVITY_DIFFUSE_HIGH,
|
||||||
GTK_ICON_SIZE_BUTTON);
|
GTK_ICON_SIZE_BUTTON);
|
||||||
gtk_table_attach (GTK_TABLE (table), image, 3, 4, 0, 1,
|
gtk_table_attach (GTK_TABLE (table), image, 3, 4, 0, 1,
|
||||||
GTK_SHRINK | GTK_FILL, GTK_SHRINK | GTK_FILL, 0, 0);
|
GTK_SHRINK | GTK_FILL, GTK_SHRINK | GTK_FILL, 0, 0);
|
||||||
gtk_widget_show (image);
|
gtk_widget_show (image);
|
||||||
|
|
||||||
/* Specular reflection */
|
/* Specular reflection */
|
||||||
|
@ -857,9 +857,9 @@ create_material_page (void)
|
||||||
gtk_size_group_add_widget (group, label);
|
gtk_size_group_add_widget (group, label);
|
||||||
|
|
||||||
spinbutton = gimp_spin_button_new (&adj, mapvals.material.specular_ref,
|
spinbutton = gimp_spin_button_new (&adj, mapvals.material.specular_ref,
|
||||||
0, G_MAXFLOAT, 0.1, 1.0, 0.0, 0.0, 2);
|
0, G_MAXFLOAT, 0.1, 1.0, 0.0, 0.0, 2);
|
||||||
gtk_table_attach (GTK_TABLE (table), spinbutton, 2, 3, 1, 2,
|
gtk_table_attach (GTK_TABLE (table), spinbutton, 2, 3, 1, 2,
|
||||||
GTK_SHRINK | GTK_FILL, GTK_SHRINK | GTK_FILL, 0, 0);
|
GTK_SHRINK | GTK_FILL, GTK_SHRINK | GTK_FILL, 0, 0);
|
||||||
gtk_widget_show (spinbutton);
|
gtk_widget_show (spinbutton);
|
||||||
|
|
||||||
g_signal_connect (adj, "value-changed",
|
g_signal_connect (adj, "value-changed",
|
||||||
|
@ -867,13 +867,13 @@ create_material_page (void)
|
||||||
&mapvals.material.specular_ref);
|
&mapvals.material.specular_ref);
|
||||||
|
|
||||||
gimp_help_set_help_data (spinbutton,
|
gimp_help_set_help_data (spinbutton,
|
||||||
_("Controls how intense the highlights will be"),
|
_("Controls how intense the highlights will be"),
|
||||||
NULL);
|
NULL);
|
||||||
|
|
||||||
image = gtk_image_new_from_stock (STOCK_REFLECTIVITY_SPECULAR_HIGH,
|
image = gtk_image_new_from_stock (STOCK_REFLECTIVITY_SPECULAR_HIGH,
|
||||||
GTK_ICON_SIZE_BUTTON);
|
GTK_ICON_SIZE_BUTTON);
|
||||||
gtk_table_attach (GTK_TABLE (table), image, 3, 4, 1, 2,
|
gtk_table_attach (GTK_TABLE (table), image, 3, 4, 1, 2,
|
||||||
GTK_SHRINK | GTK_FILL, GTK_SHRINK | GTK_FILL, 0, 0);
|
GTK_SHRINK | GTK_FILL, GTK_SHRINK | GTK_FILL, 0, 0);
|
||||||
gtk_widget_show (image);
|
gtk_widget_show (image);
|
||||||
|
|
||||||
/* Highlight */
|
/* Highlight */
|
||||||
|
@ -886,9 +886,9 @@ create_material_page (void)
|
||||||
gtk_size_group_add_widget (group, label);
|
gtk_size_group_add_widget (group, label);
|
||||||
|
|
||||||
spinbutton = gimp_spin_button_new (&adj, mapvals.material.highlight,
|
spinbutton = gimp_spin_button_new (&adj, mapvals.material.highlight,
|
||||||
0, G_MAXFLOAT, 0.1, 1.0, 0.0, 0.0, 2);
|
0, G_MAXFLOAT, 0.1, 1.0, 0.0, 0.0, 2);
|
||||||
gtk_table_attach (GTK_TABLE (table), spinbutton, 2, 3, 2, 3,
|
gtk_table_attach (GTK_TABLE (table), spinbutton, 2, 3, 2, 3,
|
||||||
GTK_SHRINK | GTK_FILL, GTK_SHRINK | GTK_FILL, 0, 0);
|
GTK_SHRINK | GTK_FILL, GTK_SHRINK | GTK_FILL, 0, 0);
|
||||||
gtk_widget_show (spinbutton);
|
gtk_widget_show (spinbutton);
|
||||||
|
|
||||||
g_signal_connect (adj, "value-changed",
|
g_signal_connect (adj, "value-changed",
|
||||||
|
@ -896,13 +896,13 @@ create_material_page (void)
|
||||||
&mapvals.material.highlight);
|
&mapvals.material.highlight);
|
||||||
|
|
||||||
gimp_help_set_help_data (spinbutton,
|
gimp_help_set_help_data (spinbutton,
|
||||||
_("Higher values makes the highlights more focused"),
|
_("Higher values makes the highlights more focused"),
|
||||||
NULL);
|
NULL);
|
||||||
|
|
||||||
image = gtk_image_new_from_stock (STOCK_REFLECTIVITY_HIGHLIGHT_HIGH,
|
image = gtk_image_new_from_stock (STOCK_REFLECTIVITY_HIGHLIGHT_HIGH,
|
||||||
GTK_ICON_SIZE_BUTTON);
|
GTK_ICON_SIZE_BUTTON);
|
||||||
gtk_table_attach (GTK_TABLE (table), image, 3, 4, 2, 3,
|
gtk_table_attach (GTK_TABLE (table), image, 3, 4, 2, 3,
|
||||||
GTK_SHRINK | GTK_FILL, GTK_SHRINK | GTK_FILL, 0, 0);
|
GTK_SHRINK | GTK_FILL, GTK_SHRINK | GTK_FILL, 0, 0);
|
||||||
gtk_widget_show (image);
|
gtk_widget_show (image);
|
||||||
|
|
||||||
gtk_widget_show (page);
|
gtk_widget_show (page);
|
||||||
|
@ -939,39 +939,39 @@ create_orientation_page (void)
|
||||||
gtk_widget_show (table);
|
gtk_widget_show (table);
|
||||||
|
|
||||||
adj = gimp_scale_entry_new (GTK_TABLE (table), 0, 0,
|
adj = gimp_scale_entry_new (GTK_TABLE (table), 0, 0,
|
||||||
_("X:"), 0, 0,
|
_("X:"), 0, 0,
|
||||||
mapvals.position.x, -1.0, 2.0, 0.01, 0.1, 5,
|
mapvals.position.x, -1.0, 2.0, 0.01, 0.1, 5,
|
||||||
TRUE, 0, 0,
|
TRUE, 0, 0,
|
||||||
_("Object X position in XYZ space"), NULL);
|
_("Object X position in XYZ space"), NULL);
|
||||||
gtk_size_group_add_widget (group, GIMP_SCALE_ENTRY_SPINBUTTON (adj));
|
gtk_size_group_add_widget (group, GIMP_SCALE_ENTRY_SPINBUTTON (adj));
|
||||||
gtk_spin_button_configure (GIMP_SCALE_ENTRY_SPINBUTTON (adj),
|
gtk_spin_button_configure (GIMP_SCALE_ENTRY_SPINBUTTON (adj),
|
||||||
GIMP_SCALE_ENTRY_SPINBUTTON_ADJ (adj), 0.01, 5);
|
GIMP_SCALE_ENTRY_SPINBUTTON_ADJ (adj), 0.01, 5);
|
||||||
|
|
||||||
g_signal_connect (adj, "value-changed",
|
g_signal_connect (adj, "value-changed",
|
||||||
G_CALLBACK (double_adjustment_update),
|
G_CALLBACK (double_adjustment_update),
|
||||||
&mapvals.position.x);
|
&mapvals.position.x);
|
||||||
|
|
||||||
adj = gimp_scale_entry_new (GTK_TABLE (table), 0, 1,
|
adj = gimp_scale_entry_new (GTK_TABLE (table), 0, 1,
|
||||||
_("Y:"), 0, 0,
|
_("Y:"), 0, 0,
|
||||||
mapvals.position.y, -1.0, 2.0, 0.01, 0.1, 5,
|
mapvals.position.y, -1.0, 2.0, 0.01, 0.1, 5,
|
||||||
TRUE, 0, 0,
|
TRUE, 0, 0,
|
||||||
_("Object Y position in XYZ space"), NULL);
|
_("Object Y position in XYZ space"), NULL);
|
||||||
gtk_size_group_add_widget (group, GIMP_SCALE_ENTRY_SPINBUTTON (adj));
|
gtk_size_group_add_widget (group, GIMP_SCALE_ENTRY_SPINBUTTON (adj));
|
||||||
gtk_spin_button_configure (GIMP_SCALE_ENTRY_SPINBUTTON (adj),
|
gtk_spin_button_configure (GIMP_SCALE_ENTRY_SPINBUTTON (adj),
|
||||||
GIMP_SCALE_ENTRY_SPINBUTTON_ADJ (adj), 0.01, 5);
|
GIMP_SCALE_ENTRY_SPINBUTTON_ADJ (adj), 0.01, 5);
|
||||||
|
|
||||||
g_signal_connect (adj, "value-changed",
|
g_signal_connect (adj, "value-changed",
|
||||||
G_CALLBACK (double_adjustment_update),
|
G_CALLBACK (double_adjustment_update),
|
||||||
&mapvals.position.y);
|
&mapvals.position.y);
|
||||||
|
|
||||||
adj = gimp_scale_entry_new (GTK_TABLE (table), 0, 2,
|
adj = gimp_scale_entry_new (GTK_TABLE (table), 0, 2,
|
||||||
_("Z:"), 0, 0,
|
_("Z:"), 0, 0,
|
||||||
mapvals.position.z, -1.0, 2.0, 0.01, 0.1, 5,
|
mapvals.position.z, -1.0, 2.0, 0.01, 0.1, 5,
|
||||||
TRUE, 0, 0,
|
TRUE, 0, 0,
|
||||||
_("Object Z position in XYZ space"), NULL);
|
_("Object Z position in XYZ space"), NULL);
|
||||||
gtk_size_group_add_widget (group, GIMP_SCALE_ENTRY_SPINBUTTON (adj));
|
gtk_size_group_add_widget (group, GIMP_SCALE_ENTRY_SPINBUTTON (adj));
|
||||||
gtk_spin_button_configure (GIMP_SCALE_ENTRY_SPINBUTTON (adj),
|
gtk_spin_button_configure (GIMP_SCALE_ENTRY_SPINBUTTON (adj),
|
||||||
GIMP_SCALE_ENTRY_SPINBUTTON_ADJ (adj), 0.01, 5);
|
GIMP_SCALE_ENTRY_SPINBUTTON_ADJ (adj), 0.01, 5);
|
||||||
|
|
||||||
g_signal_connect (adj, "value-changed",
|
g_signal_connect (adj, "value-changed",
|
||||||
G_CALLBACK (double_adjustment_update),
|
G_CALLBACK (double_adjustment_update),
|
||||||
|
@ -988,10 +988,10 @@ create_orientation_page (void)
|
||||||
gtk_widget_show (table);
|
gtk_widget_show (table);
|
||||||
|
|
||||||
adj = gimp_scale_entry_new (GTK_TABLE (table), 0, 0,
|
adj = gimp_scale_entry_new (GTK_TABLE (table), 0, 0,
|
||||||
_("X:"), 0, 0,
|
_("X:"), 0, 0,
|
||||||
mapvals.alpha, -180.0, 180.0, 1.0, 15.0, 1,
|
mapvals.alpha, -180.0, 180.0, 1.0, 15.0, 1,
|
||||||
TRUE, 0, 0,
|
TRUE, 0, 0,
|
||||||
_("Rotation angle about X axis"), NULL);
|
_("Rotation angle about X axis"), NULL);
|
||||||
gtk_size_group_add_widget (group, GIMP_SCALE_ENTRY_SPINBUTTON (adj));
|
gtk_size_group_add_widget (group, GIMP_SCALE_ENTRY_SPINBUTTON (adj));
|
||||||
|
|
||||||
g_signal_connect (adj, "value-changed",
|
g_signal_connect (adj, "value-changed",
|
||||||
|
@ -999,10 +999,10 @@ create_orientation_page (void)
|
||||||
&mapvals.alpha);
|
&mapvals.alpha);
|
||||||
|
|
||||||
adj = gimp_scale_entry_new (GTK_TABLE (table), 0, 1,
|
adj = gimp_scale_entry_new (GTK_TABLE (table), 0, 1,
|
||||||
_("Y:"), 0, 0,
|
_("Y:"), 0, 0,
|
||||||
mapvals.beta, -180.0, 180.0, 1.0, 15.0, 1,
|
mapvals.beta, -180.0, 180.0, 1.0, 15.0, 1,
|
||||||
TRUE, 0, 0,
|
TRUE, 0, 0,
|
||||||
_("Rotation angle about Y axis"), NULL);
|
_("Rotation angle about Y axis"), NULL);
|
||||||
gtk_size_group_add_widget (group, GIMP_SCALE_ENTRY_SPINBUTTON (adj));
|
gtk_size_group_add_widget (group, GIMP_SCALE_ENTRY_SPINBUTTON (adj));
|
||||||
|
|
||||||
g_signal_connect (adj, "value-changed",
|
g_signal_connect (adj, "value-changed",
|
||||||
|
@ -1010,10 +1010,10 @@ create_orientation_page (void)
|
||||||
&mapvals.beta);
|
&mapvals.beta);
|
||||||
|
|
||||||
adj = gimp_scale_entry_new (GTK_TABLE (table), 0, 2,
|
adj = gimp_scale_entry_new (GTK_TABLE (table), 0, 2,
|
||||||
_("Z:"), 0, 0,
|
_("Z:"), 0, 0,
|
||||||
mapvals.gamma, -180.0, 180.0, 1.0, 15.0, 1,
|
mapvals.gamma, -180.0, 180.0, 1.0, 15.0, 1,
|
||||||
TRUE, 0, 0,
|
TRUE, 0, 0,
|
||||||
_("Rotation angle about Z axis"), NULL);
|
_("Rotation angle about Z axis"), NULL);
|
||||||
gtk_size_group_add_widget (group, GIMP_SCALE_ENTRY_SPINBUTTON (adj));
|
gtk_size_group_add_widget (group, GIMP_SCALE_ENTRY_SPINBUTTON (adj));
|
||||||
|
|
||||||
g_signal_connect (adj, "value-changed",
|
g_signal_connect (adj, "value-changed",
|
||||||
|
@ -1072,8 +1072,8 @@ create_box_page (void)
|
||||||
&mapvals.boxmap_id[i]);
|
&mapvals.boxmap_id[i]);
|
||||||
|
|
||||||
gimp_table_attach_aligned (GTK_TABLE (table), 0, i,
|
gimp_table_attach_aligned (GTK_TABLE (table), 0, i,
|
||||||
gettext (labels[i]), 0.0, 0.5,
|
gettext (labels[i]), 0.0, 0.5,
|
||||||
combo, 1, FALSE);
|
combo, 1, FALSE);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Scale scales */
|
/* Scale scales */
|
||||||
|
@ -1085,36 +1085,36 @@ create_box_page (void)
|
||||||
gtk_widget_show (table);
|
gtk_widget_show (table);
|
||||||
|
|
||||||
adj = gimp_scale_entry_new (GTK_TABLE (table), 0, 0,
|
adj = gimp_scale_entry_new (GTK_TABLE (table), 0, 0,
|
||||||
_("Scale X:"), 0, 0,
|
_("Scale X:"), 0, 0,
|
||||||
mapvals.scale.x, 0.0, 5.0, 0.01, 0.1, 2,
|
mapvals.scale.x, 0.0, 5.0, 0.01, 0.1, 2,
|
||||||
TRUE, 0, 0,
|
TRUE, 0, 0,
|
||||||
_("X scale (size)"), NULL);
|
_("X scale (size)"), NULL);
|
||||||
gtk_spin_button_configure (GIMP_SCALE_ENTRY_SPINBUTTON (adj),
|
gtk_spin_button_configure (GIMP_SCALE_ENTRY_SPINBUTTON (adj),
|
||||||
GIMP_SCALE_ENTRY_SPINBUTTON_ADJ (adj), 0.1, 2);
|
GIMP_SCALE_ENTRY_SPINBUTTON_ADJ (adj), 0.1, 2);
|
||||||
|
|
||||||
g_signal_connect (adj, "value-changed",
|
g_signal_connect (adj, "value-changed",
|
||||||
G_CALLBACK (double_adjustment_update),
|
G_CALLBACK (double_adjustment_update),
|
||||||
&mapvals.scale.x);
|
&mapvals.scale.x);
|
||||||
|
|
||||||
adj = gimp_scale_entry_new (GTK_TABLE (table), 0, 1,
|
adj = gimp_scale_entry_new (GTK_TABLE (table), 0, 1,
|
||||||
_("Y:"), 0, 0,
|
_("Y:"), 0, 0,
|
||||||
mapvals.scale.y, 0.0, 5.0, 0.01, 0.1, 2,
|
mapvals.scale.y, 0.0, 5.0, 0.01, 0.1, 2,
|
||||||
TRUE, 0, 0,
|
TRUE, 0, 0,
|
||||||
_("Y scale (size)"), NULL);
|
_("Y scale (size)"), NULL);
|
||||||
gtk_spin_button_configure (GIMP_SCALE_ENTRY_SPINBUTTON (adj),
|
gtk_spin_button_configure (GIMP_SCALE_ENTRY_SPINBUTTON (adj),
|
||||||
GIMP_SCALE_ENTRY_SPINBUTTON_ADJ (adj), 0.1, 2);
|
GIMP_SCALE_ENTRY_SPINBUTTON_ADJ (adj), 0.1, 2);
|
||||||
|
|
||||||
g_signal_connect (adj, "value-changed",
|
g_signal_connect (adj, "value-changed",
|
||||||
G_CALLBACK (double_adjustment_update),
|
G_CALLBACK (double_adjustment_update),
|
||||||
&mapvals.scale.y);
|
&mapvals.scale.y);
|
||||||
|
|
||||||
adj = gimp_scale_entry_new (GTK_TABLE (table), 0, 2,
|
adj = gimp_scale_entry_new (GTK_TABLE (table), 0, 2,
|
||||||
_("Z:"), 0, 0,
|
_("Z:"), 0, 0,
|
||||||
mapvals.scale.z, 0.0, 5.0, 0.01, 0.1, 2,
|
mapvals.scale.z, 0.0, 5.0, 0.01, 0.1, 2,
|
||||||
TRUE, 0, 0,
|
TRUE, 0, 0,
|
||||||
_("Z scale (size)"), NULL);
|
_("Z scale (size)"), NULL);
|
||||||
gtk_spin_button_configure (GIMP_SCALE_ENTRY_SPINBUTTON (adj),
|
gtk_spin_button_configure (GIMP_SCALE_ENTRY_SPINBUTTON (adj),
|
||||||
GIMP_SCALE_ENTRY_SPINBUTTON_ADJ (adj), 0.1, 2);
|
GIMP_SCALE_ENTRY_SPINBUTTON_ADJ (adj), 0.1, 2);
|
||||||
|
|
||||||
g_signal_connect (adj, "value-changed",
|
g_signal_connect (adj, "value-changed",
|
||||||
G_CALLBACK (double_adjustment_update),
|
G_CALLBACK (double_adjustment_update),
|
||||||
|
@ -1180,28 +1180,28 @@ create_cylinder_page (void)
|
||||||
gtk_widget_show (table);
|
gtk_widget_show (table);
|
||||||
|
|
||||||
adj = gimp_scale_entry_new (GTK_TABLE (table), 0, 0,
|
adj = gimp_scale_entry_new (GTK_TABLE (table), 0, 0,
|
||||||
_("R_adius:"), 0, 0,
|
_("R_adius:"), 0, 0,
|
||||||
mapvals.cylinder_radius,
|
mapvals.cylinder_radius,
|
||||||
0.0, 2.0, 0.01, 0.1, 2,
|
0.0, 2.0, 0.01, 0.1, 2,
|
||||||
TRUE, 0, 0,
|
TRUE, 0, 0,
|
||||||
_("Cylinder radius"), NULL);
|
_("Cylinder radius"), NULL);
|
||||||
gtk_size_group_add_widget (group, GIMP_SCALE_ENTRY_LABEL (adj));
|
gtk_size_group_add_widget (group, GIMP_SCALE_ENTRY_LABEL (adj));
|
||||||
gtk_spin_button_configure (GIMP_SCALE_ENTRY_SPINBUTTON (adj),
|
gtk_spin_button_configure (GIMP_SCALE_ENTRY_SPINBUTTON (adj),
|
||||||
GIMP_SCALE_ENTRY_SPINBUTTON_ADJ (adj), 0.1, 2);
|
GIMP_SCALE_ENTRY_SPINBUTTON_ADJ (adj), 0.1, 2);
|
||||||
|
|
||||||
g_signal_connect (adj, "value-changed",
|
g_signal_connect (adj, "value-changed",
|
||||||
G_CALLBACK (double_adjustment_update),
|
G_CALLBACK (double_adjustment_update),
|
||||||
&mapvals.cylinder_radius);
|
&mapvals.cylinder_radius);
|
||||||
|
|
||||||
adj = gimp_scale_entry_new (GTK_TABLE (table), 0, 1,
|
adj = gimp_scale_entry_new (GTK_TABLE (table), 0, 1,
|
||||||
_("L_ength:"), 0, 0,
|
_("L_ength:"), 0, 0,
|
||||||
mapvals.cylinder_length,
|
mapvals.cylinder_length,
|
||||||
0.0, 2.0, 0.01, 0.1, 2,
|
0.0, 2.0, 0.01, 0.1, 2,
|
||||||
TRUE, 0, 0,
|
TRUE, 0, 0,
|
||||||
_("Cylinder length"), NULL);
|
_("Cylinder length"), NULL);
|
||||||
gtk_size_group_add_widget (group, GIMP_SCALE_ENTRY_LABEL (adj));
|
gtk_size_group_add_widget (group, GIMP_SCALE_ENTRY_LABEL (adj));
|
||||||
gtk_spin_button_configure (GIMP_SCALE_ENTRY_SPINBUTTON (adj),
|
gtk_spin_button_configure (GIMP_SCALE_ENTRY_SPINBUTTON (adj),
|
||||||
GIMP_SCALE_ENTRY_SPINBUTTON_ADJ (adj), 0.1, 2);
|
GIMP_SCALE_ENTRY_SPINBUTTON_ADJ (adj), 0.1, 2);
|
||||||
|
|
||||||
g_signal_connect (adj, "value-changed",
|
g_signal_connect (adj, "value-changed",
|
||||||
G_CALLBACK (double_adjustment_update),
|
G_CALLBACK (double_adjustment_update),
|
||||||
|
@ -1229,33 +1229,33 @@ create_main_notebook (GtkWidget *container)
|
||||||
|
|
||||||
page = create_options_page ();
|
page = create_options_page ();
|
||||||
gtk_notebook_append_page (options_note_book, page,
|
gtk_notebook_append_page (options_note_book, page,
|
||||||
gtk_label_new_with_mnemonic (_("O_ptions")));
|
gtk_label_new_with_mnemonic (_("O_ptions")));
|
||||||
|
|
||||||
page = create_light_page ();
|
page = create_light_page ();
|
||||||
gtk_notebook_append_page (options_note_book, page,
|
gtk_notebook_append_page (options_note_book, page,
|
||||||
gtk_label_new_with_mnemonic (_("_Light")));
|
gtk_label_new_with_mnemonic (_("_Light")));
|
||||||
|
|
||||||
page = create_material_page ();
|
page = create_material_page ();
|
||||||
gtk_notebook_append_page (options_note_book, page,
|
gtk_notebook_append_page (options_note_book, page,
|
||||||
gtk_label_new_with_mnemonic (_("_Material")));
|
gtk_label_new_with_mnemonic (_("_Material")));
|
||||||
|
|
||||||
page = create_orientation_page ();
|
page = create_orientation_page ();
|
||||||
gtk_notebook_append_page (options_note_book, page,
|
gtk_notebook_append_page (options_note_book, page,
|
||||||
gtk_label_new_with_mnemonic (_("O_rientation")));
|
gtk_label_new_with_mnemonic (_("O_rientation")));
|
||||||
|
|
||||||
if (mapvals.maptype == MAP_BOX)
|
if (mapvals.maptype == MAP_BOX)
|
||||||
{
|
{
|
||||||
box_page = create_box_page ();
|
box_page = create_box_page ();
|
||||||
g_object_ref (box_page);
|
g_object_ref (box_page);
|
||||||
gtk_notebook_append_page (options_note_book, box_page,
|
gtk_notebook_append_page (options_note_book, box_page,
|
||||||
gtk_label_new_with_mnemonic (_("_Box")));
|
gtk_label_new_with_mnemonic (_("_Box")));
|
||||||
}
|
}
|
||||||
else if (mapvals.maptype == MAP_CYLINDER)
|
else if (mapvals.maptype == MAP_CYLINDER)
|
||||||
{
|
{
|
||||||
cylinder_page = create_cylinder_page ();
|
cylinder_page = create_cylinder_page ();
|
||||||
g_object_ref (cylinder_page);
|
g_object_ref (cylinder_page);
|
||||||
gtk_notebook_append_page (options_note_book, cylinder_page,
|
gtk_notebook_append_page (options_note_book, cylinder_page,
|
||||||
gtk_label_new_with_mnemonic (_("C_ylinder")));
|
gtk_label_new_with_mnemonic (_("C_ylinder")));
|
||||||
}
|
}
|
||||||
|
|
||||||
gtk_widget_show (GTK_WIDGET (options_note_book));
|
gtk_widget_show (GTK_WIDGET (options_note_book));
|
||||||
|
@ -1281,12 +1281,12 @@ main_dialog (GimpDrawable *drawable)
|
||||||
|
|
||||||
appwin = gimp_dialog_new (_("Map to Object"), PLUG_IN_BINARY,
|
appwin = gimp_dialog_new (_("Map to Object"), PLUG_IN_BINARY,
|
||||||
NULL, 0,
|
NULL, 0,
|
||||||
gimp_standard_help_func, PLUG_IN_PROC,
|
gimp_standard_help_func, PLUG_IN_PROC,
|
||||||
|
|
||||||
GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
|
GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
|
||||||
GTK_STOCK_OK, GTK_RESPONSE_OK,
|
GTK_STOCK_OK, GTK_RESPONSE_OK,
|
||||||
|
|
||||||
NULL);
|
NULL);
|
||||||
|
|
||||||
gtk_dialog_set_alternative_button_order (GTK_DIALOG (appwin),
|
gtk_dialog_set_alternative_button_order (GTK_DIALOG (appwin),
|
||||||
GTK_RESPONSE_OK,
|
GTK_RESPONSE_OK,
|
||||||
|
@ -1318,9 +1318,9 @@ main_dialog (GimpDrawable *drawable)
|
||||||
previewarea = gtk_drawing_area_new ();
|
previewarea = gtk_drawing_area_new ();
|
||||||
gtk_widget_set_size_request (previewarea, PREVIEW_WIDTH, PREVIEW_HEIGHT);
|
gtk_widget_set_size_request (previewarea, PREVIEW_WIDTH, PREVIEW_HEIGHT);
|
||||||
gtk_widget_set_events (previewarea, (GDK_EXPOSURE_MASK |
|
gtk_widget_set_events (previewarea, (GDK_EXPOSURE_MASK |
|
||||||
GDK_BUTTON1_MOTION_MASK |
|
GDK_BUTTON1_MOTION_MASK |
|
||||||
GDK_BUTTON_PRESS_MASK |
|
GDK_BUTTON_PRESS_MASK |
|
||||||
GDK_BUTTON_RELEASE_MASK));
|
GDK_BUTTON_RELEASE_MASK));
|
||||||
gtk_container_add (GTK_CONTAINER (frame), previewarea);
|
gtk_container_add (GTK_CONTAINER (frame), previewarea);
|
||||||
gtk_widget_show (previewarea);
|
gtk_widget_show (previewarea);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue