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 |
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 |
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[ |
168 | ii[1].x=rint(dd[2])+ii[0].x; ii[1].y=rint(dd[3])+ii[0].y; |
168 | ii[4 |
169 | ii[2].x=rint(dd[4])+ii[0].x; ii[2].y=rint(dd[5])+ii[0].y; |
169 | gdImageFilledPolygon(image, |
170 | gdImageFilledPolygon(image, ii,3,pm->color[0]); |
170 | xx=rint(dd[0])+ii[0];yy |
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-> |
173 | ii[0].x=pm->p[0]; ii[0].y=pm->p[1]; |
173 | ii[ |
174 | ii[1].x=-rint(dd[2])+ii[0].x; ii[1].y=-rint(dd[3])+ii[0].y; |
174 | ii[ |
175 | ii[2].x=-rint(dd[4])+ii[0].x; ii[2].y=-rint(dd[5])+ii[0].y; |
175 | gdImageFilledPolygon(image, |
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]); |