Author: manolo
Date: 2012-05-09 04:50:49 -0700 (Wed, 09 May 2012)
New Revision: 9470
Log:
Fixed fltk3::PostScriptGraphicsDriver for group-relative coordinates.
Modified:
branches/branch-3.0/src/fltk3/PostScript.cxx
branches/branch-3.0/src/fltk3/ps_image.cxx
Modified: branches/branch-3.0/src/fltk3/PostScript.cxx
===================================================================
--- branches/branch-3.0/src/fltk3/PostScript.cxx 2012-05-09 11:45:08 UTC
(rev 9469)
+++ branches/branch-3.0/src/fltk3/PostScript.cxx 2012-05-09 11:50:49 UTC
(rev 9470)
@@ -697,6 +697,7 @@
// fprintf(output, "GS\n");
// fprintf(output, "%i, %i, %i, %i R\n", x , y , w, h);
// fprintf(output, "GR\n");
+ x += origin_x(); y += origin_y();
fprintf(output, "GS\n");
fprintf(output,"BP\n");
fprintf(output, "%i %i MT\n", x , y);
@@ -708,16 +709,19 @@
}
void fltk3::PostScriptGraphicsDriver::rectf(int x, int y, int w, int h) {
+ x += origin_x(); y += origin_y();
fprintf(output, "%g %g %i %i FR\n", x-0.5, y-0.5, w, h);
}
void fltk3::PostScriptGraphicsDriver::line(int x1, int y1, int x2, int y2) {
+ x1 += origin_x(); y1 += origin_y(); x2 += origin_x(); y2 += origin_y();
fprintf(output, "GS\n");
fprintf(output, "%i %i %i %i L\n", x1 , y1, x2 ,y2);
fprintf(output, "GR\n");
}
void fltk3::PostScriptGraphicsDriver::line(int x0, int y0, int x1, int y1, int
x2, int y2) {
+ x0 += origin_x(); y0 += origin_y(); x1 += origin_x(); y1 += origin_y(); x2
+= origin_x(); y2 += origin_y();
fprintf(output, "GS\n");
fprintf(output,"BP\n");
fprintf(output, "%i %i MT\n", x0 , y0);
@@ -728,6 +732,7 @@
}
void fltk3::PostScriptGraphicsDriver::xyline(int x, int y, int x1, int y2, int
x3){
+ x += origin_x(); y += origin_y(); x1 += origin_x(); y2 += origin_y(); x3 +=
origin_x();
fprintf(output, "GS\n");
fprintf(output,"BP\n");
fprintf(output, "%i %i MT\n", x , y );
@@ -740,7 +745,7 @@
void fltk3::PostScriptGraphicsDriver::xyline(int x, int y, int x1, int y2){
-
+ x += origin_x(); y += origin_y(); x1 += origin_x(); y2 += origin_y();
fprintf(output, "GS\n");
fprintf(output,"BP\n");
fprintf(output, "%i %i MT\n", x , y);
@@ -751,6 +756,7 @@
}
void fltk3::PostScriptGraphicsDriver::xyline(int x, int y, int x1){
+ x += origin_x(); y += origin_y(); x1 += origin_x();
fprintf(output, "GS\n");
fprintf(output,"BP\n");
fprintf(output, "%i %i MT\n", x , y);
@@ -761,8 +767,8 @@
}
void fltk3::PostScriptGraphicsDriver::yxline(int x, int y, int y1, int x2, int
y3){
+ x += origin_x(); y += origin_y(); y1 += origin_y(); x2 += origin_x(); y3 +=
origin_y();
fprintf(output, "GS\n");
-
fprintf(output,"BP\n");
fprintf(output,"%i %i MT\n", x , y);
fprintf(output, "%i %i LT\n", x , y1 );
@@ -773,6 +779,7 @@
}
void fltk3::PostScriptGraphicsDriver::yxline(int x, int y, int y1, int x2){
+ x += origin_x(); y += origin_y(); y1 += origin_y(); x2 += origin_x();
fprintf(output, "GS\n");
fprintf(output,"BP\n");
fprintf(output, "%i %i MT\n", x , y);
@@ -783,6 +790,7 @@
}
void fltk3::PostScriptGraphicsDriver::yxline(int x, int y, int y1){
+ x += origin_x(); y += origin_y(); y1 += origin_y();
fprintf(output, "GS\n");
fprintf(output,"BP\n");
fprintf(output, "%i %i MT\n", x , y);
@@ -792,6 +800,7 @@
}
void fltk3::PostScriptGraphicsDriver::loop(int x0, int y0, int x1, int y1, int
x2, int y2) {
+ x0 += origin_x(); y0 += origin_y(); x1 += origin_x(); y1 += origin_y(); x2
+= origin_x(); y2 += origin_y();
fprintf(output, "GS\n");
fprintf(output,"BP\n");
fprintf(output, "%i %i MT\n", x0 , y0);
@@ -802,6 +811,8 @@
}
void fltk3::PostScriptGraphicsDriver::loop(int x0, int y0, int x1, int y1, int
x2, int y2, int x3, int y3) {
+ x0 += origin_x(); y0 += origin_y(); x1 += origin_x(); y1 += origin_y();
+ x2 += origin_x(); y2 += origin_y(); x3 += origin_x(); y3 += origin_y();
fprintf(output, "GS\n");
fprintf(output,"BP\n");
fprintf(output, "%i %i MT\n", x0 , y0);
@@ -813,6 +824,7 @@
}
void fltk3::PostScriptGraphicsDriver::polygon(int x0, int y0, int x1, int y1,
int x2, int y2) {
+ x0 += origin_x(); y0 += origin_y(); x1 += origin_x(); y1 += origin_y(); x2
+= origin_x(); y2 += origin_y();
fprintf(output, "GS\n");
fprintf(output,"BP\n");
fprintf(output, "%i %i MT\n", x0 , y0);
@@ -823,19 +835,20 @@
}
void fltk3::PostScriptGraphicsDriver::polygon(int x0, int y0, int x1, int y1,
int x2, int y2, int x3, int y3) {
+ x0 += origin_x(); y0 += origin_y(); x1 += origin_x(); y1 += origin_y();
+ x2 += origin_x(); y2 += origin_y(); x3 += origin_x(); y3 += origin_y();
fprintf(output, "GS\n");
fprintf(output,"BP\n");
fprintf(output, "%i %i MT\n", x0 , y0 );
fprintf(output, "%i %i LT\n", x1 , y1 );
fprintf(output, "%i %i LT\n", x2 , y2 );
fprintf(output, "%i %i LT\n", x3 , y3 );
-
fprintf(output, "EFP\n");
fprintf(output, "GR\n");
}
void fltk3::PostScriptGraphicsDriver::point(int x, int y){
- rectf(x,y,1,1);
+ rectf(x + origin_x(), y + origin_y(), 1, 1);
}
static int dashes_flat[5][7]={
@@ -1127,6 +1140,7 @@
// compute display width of string
int w = (int)width(str, n);
if (w == 0) return;
+ x += origin_x(); y += origin_y();
if (GraphicsDriver::font() >= fltk3::FREE_FONT) {
transformed_draw_extra(str, n, x, y, w, output, this, false);
return;
@@ -1167,11 +1181,13 @@
}
void fltk3::PostScriptGraphicsDriver::concat(){
- fprintf(output,"[%g %g %g %g %g %g] CT\n", fl_matrix->a , fl_matrix->b ,
fl_matrix->c , fl_matrix->d , fl_matrix->x , fl_matrix->y);
+ fprintf(output,"[%g %g %g %g %g %g] CT\n", fl_matrix->a , fl_matrix->b ,
fl_matrix->c , fl_matrix->d ,
+ fl_matrix->x + origin_x() , fl_matrix->y + origin_y());
}
void fltk3::PostScriptGraphicsDriver::reconcat(){
- fprintf(output, "[%g %g %g %g %g %g] RCT\n" , fl_matrix->a , fl_matrix->b ,
fl_matrix->c , fl_matrix->d , fl_matrix->x , fl_matrix->y);
+ fprintf(output, "[%g %g %g %g %g %g] RCT\n" , fl_matrix->a , fl_matrix->b ,
fl_matrix->c , fl_matrix->d ,
+ fl_matrix->x + origin_x() , fl_matrix->y + origin_y());
}
///////////////// transformed (double) drawings
////////////////////////////////
@@ -1180,7 +1196,6 @@
void fltk3::PostScriptGraphicsDriver::begin_points(){
fprintf(output, "GS\n");
concat();
-
fprintf(output, "BP\n");
gap_=1;
shape_=POINTS;
@@ -1231,23 +1246,19 @@
fprintf(output, "%g %g LT\n", x , y);
gap_=0;
- fprintf(output, "%g %g %g %g %g %g curveto \n", x1 , y1 , x2 , y2 , x3 , y3);
+ fprintf(output, "%g %g %g %g %g %g curveto \n", x1, y1, x2, y2, x3, y3);
}
void fltk3::PostScriptGraphicsDriver::circle(double x, double y, double r){
- if(shape_==NONE){
+ if (shape_ == NONE){
fprintf(output, "GS\n");
concat();
- // fprintf(output, "BP\n");
fprintf(output,"%g %g %g 0 360 arc\n", x , y , r);
reconcat();
- // fprintf(output, "ELP\n");
fprintf(output, "GR\n");
- }else
-
+ } else
fprintf(output, "%g %g %g 0 360 arc\n", x , y , r);
-
}
void fltk3::PostScriptGraphicsDriver::arc(double x, double y, double r, double
start, double a){
@@ -1262,29 +1273,21 @@
void fltk3::PostScriptGraphicsDriver::arc(int x, int y, int w, int h, double
a1, double a2) {
fprintf(output, "GS\n");
- //fprintf(output, "BP\n");
begin_line();
fprintf(output, "%g %g TR\n", x + w/2.0 -0.5 , y + h/2.0 - 0.5);
fprintf(output, "%g %g SC\n", (w-1)/2.0 , (h-1)/2.0 );
arc(0,0,1,a2,a1);
- // fprintf(output, "0 0 1 %g %g arc\n" , -a1 , -a2);
fprintf(output, "%g %g SC\n", 2.0/(w-1) , 2.0/(h-1) );
fprintf(output, "%g %g TR\n", -x - w/2.0 +0.5 , -y - h/2.0 +0.5);
end_line();
-
- // fprintf(output, "%g setlinewidth\n", 2/sqrt(w*h));
- // fprintf(output, "ELP\n");
- // fprintf(output, 2.0/w , 2.0/w , " SC\n";
- // fprintf(output, (-x - w/2.0) , (-y - h/2) , " TR\n";
fprintf(output, "GR\n");
}
void fltk3::PostScriptGraphicsDriver::pie(int x, int y, int w, int h, double
a1, double a2) {
-
fprintf(output, "GS\n");
+ begin_polygon();
fprintf(output, "%g %g TR\n", x + w/2.0 -0.5 , y + h/2.0 - 0.5);
fprintf(output, "%g %g SC\n", (w-1)/2.0 , (h-1)/2.0 );
- begin_polygon();
vertex(0,0);
arc(0.0,0.0, 1, a2, a1);
end_polygon();
@@ -1343,7 +1346,7 @@
fprintf(output, "CR\nCS\n");
if(lang_level_<3)
recover();
- fprintf(output, "%g %g %i %i CL\n", clip_->x-0.5 , clip_->y-0.5 , clip_->w
, clip_->h);
+ fprintf(output, "%g %g %i %i CL\n", clip_->x + origin_x() - 0.5 , clip_->y +
origin_y() - 0.5 , clip_->w , clip_->h);
}
@@ -1384,9 +1387,7 @@
if (y > (Y=clip_->y)) {Y=y; ret=1;}
if ((x+w) < (clip_->x+clip_->w)) {
W=x+w-X;
-
ret=1;
-
}else
W = clip_->x + clip_->w - X;
if(W<0){
Modified: branches/branch-3.0/src/fltk3/ps_image.cxx
===================================================================
--- branches/branch-3.0/src/fltk3/ps_image.cxx 2012-05-09 11:45:08 UTC (rev
9469)
+++ branches/branch-3.0/src/fltk3/ps_image.cxx 2012-05-09 11:50:49 UTC (rev
9470)
@@ -470,6 +470,8 @@
mx = WP;
my = HP;
push_clip(XP, YP, WP, HP);
+ XP += origin_x();
+ YP += origin_y();
fltk3::draw_pixmap(di,XP -cx, YP -cy, fltk3::BLACK );
pop_clip();
delete[] mask;
@@ -485,6 +487,8 @@
if (lang_level_>2) //when not true, not making alphamask, mixing colors
instead...
if (alpha_mask(di, w, h, rgb->d(),rgb->ld())) return; //everthing masked, no
need for painting!
push_clip(XP, YP, WP, HP);
+ XP += origin_x();
+ YP += origin_y();
draw_image(di, XP + cx, YP + cy, w, h, rgb->d(), rgb->ld());
pop_clip();
delete[]mask;
@@ -514,6 +518,8 @@
int i,j;
push_clip(XP, YP, WP, HP);
+ XP += origin_x();
+ YP += origin_y();
fprintf(output , "%i %i %i %i %i %i MI", XP - si, YP + HP , WP , -HP , w ,
h);
for (j=0; j<HP; j++){
_______________________________________________
fltk-commit mailing list
[email protected]
http://lists.easysw.com/mailman/listinfo/fltk-commit