Subversion Repositories wimsdev

Rev

Rev 8162 | Rev 8171 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 8162 Rev 8163
Line 150... Line 150...
150
    if(vimg_enable) vimg_line(scale_buf[0],scale_buf[1],scale_buf[2],scale_buf[3]);
150
    if(vimg_enable) vimg_line(scale_buf[0],scale_buf[1],scale_buf[2],scale_buf[3]);
151
}
151
}
152
 
152
 
153
void _obj_arrow(objparm *pm, int twoside)
153
void _obj_arrow(objparm *pm, int twoside)
154
{
154
{
155
    int l,ii[6],xx,yy;
155
    int l,xx,yy;
-
 
156
    gdPoint ii[3];
156
    double dx,dy,length,dd[6];
157
    double dx,dy,length,dd[6];
157
    scale(pm->pd,pm->p,2);
158
    scale(pm->pd,pm->p,2);
158
    xx=ii[0]=pm->p[2];yy=ii[1]=pm->p[3];
159
    xx=ii[0].x=pm->p[2];yy=ii[0].y=pm->p[3];
159
    l=pm->pd[4];if(l<0) l=0; if(l>200) l=200;
160
    l=pm->pd[4];if(l<0) l=0; if(l>200) l=200;
160
    scale2(pm->pd[0]-pm->pd[2],pm->pd[1]-pm->pd[3],&dx,&dy);
161
    scale2(pm->pd[0]-pm->pd[2],pm->pd[1]-pm->pd[3],&dx,&dy);
161
    length=sqrt(dx*dx+dy*dy);
162
    length=sqrt(dx*dx+dy*dy);
162
    if(length<3 || l<5) goto stem;
163
    if(length<3 || l<5) goto stem;
163
    dd[0]=l*dx/length; dd[1]=l*dy/length;
164
    dd[0]=l*dx/length; dd[1]=l*dy/length;
164
    #define fat 0.27
165
    #define fat 0.27
165
    dd[2]=dd[0]+dd[1]*fat; dd[3]=dd[1]-dd[0]*fat;
166
    dd[2]=dd[0]+dd[1]*fat; dd[3]=dd[1]-dd[0]*fat;
166
    dd[4]=dd[0]-dd[1]*fat; dd[5]=dd[1]+dd[0]*fat;
167
    dd[4]=dd[0]-dd[1]*fat; dd[5]=dd[1]+dd[0]*fat;
167
    ii[2]=rint(dd[2])+ii[0]; ii[3]=rint(dd[3])+ii[1];
168
    ii[1].x=rint(dd[2])+ii[0].x; ii[1].y=rint(dd[3])+ii[0].y;
168
    ii[4]=rint(dd[4])+ii[0]; ii[5]=rint(dd[5])+ii[1];
169
    ii[2].x=rint(dd[4])+ii[0].x; ii[2].y=rint(dd[5])+ii[0].y;
169
    gdImageFilledPolygon(image,(gdPointPtr) ii,3,pm->color[0]);
170
    gdImageFilledPolygon(image, ii,3,pm->color[0]);
170
    xx=rint(dd[0])+ii[0];yy=rint(dd[1])+ii[1];
171
    xx=rint(dd[0])+ii[0].x;yy=rint(dd[1])+ii[0].y;
171
    if(twoside) {
172
    if(twoside) {
172
      ii[0]=pm->p[0]; ii[1]=pm->p[1];
173
      ii[0].x=pm->p[0]; ii[0].y=pm->p[1];
173
      ii[2]=-rint(dd[2])+ii[0]; ii[3]=-rint(dd[3])+ii[1];
174
      ii[1].x=-rint(dd[2])+ii[0].x; ii[1].y=-rint(dd[3])+ii[0].y;
174
      ii[4]=-rint(dd[4])+ii[0]; ii[5]=-rint(dd[5])+ii[1];
175
      ii[2].x=-rint(dd[4])+ii[0].x; ii[2].y=-rint(dd[5])+ii[0].y;
175
      gdImageFilledPolygon(image,(gdPointPtr) ii,3,pm->color[0]);
176
      gdImageFilledPolygon(image, ii,3,pm->color[0]);
176
    }
177
    }
177
    stem: if(pm->fill)
178
    stem: if(pm->fill)
178
      gdImageDashedLine(image,pm->p[0],pm->p[1],xx,yy,pm->color[0]);
179
      gdImageDashedLine(image,pm->p[0],pm->p[1],xx,yy,pm->color[0]);
179
    else
180
    else
180
      gdImageLine(image,pm->p[0],pm->p[1],xx,yy,pm->color[0]);
181
      gdImageLine(image,pm->p[0],pm->p[1],xx,yy,pm->color[0]);