1 /************************************************************************/
2 /*									*/
3 /*  Shapes.. Administration.						*/
4 /*									*/
5 /************************************************************************/
6 
7 #   include	"docBaseConfig.h"
8 
9 #   include	<stdlib.h>
10 #   include	<stdio.h>
11 
12 #   include	"docPropVal.h"
13 #   include	"docShapeProp.h"
14 #   include	"docShapeDrawing.h"
15 
16 #   include	<appDebugon.h>
17 
18 /************************************************************************/
19 /*									*/
20 /*  Initialize/Clean a shape arrow.					*/
21 /*									*/
22 /************************************************************************/
23 
docInitShapeArrow(ShapeArrow * sa)24 void docInitShapeArrow(	ShapeArrow *	sa )
25     {
26     sa->saArrowHead= 0;
27     sa->saArrowWidth= 1;
28     sa->saArrowLength= 1;
29     }
30 
31 /************************************************************************/
32 /*									*/
33 /*  Initialize/Clean a shape.						*/
34 /*									*/
35 /************************************************************************/
36 
docCleanShapeDrawing(ShapeDrawing * sd)37 void docCleanShapeDrawing(	ShapeDrawing *		sd )
38     {
39     if  ( sd->sdVertices )
40 	{ free( sd->sdVertices ); }
41     if  ( sd->sdWrapPolygonVertices )
42 	{ free( sd->sdWrapPolygonVertices ); }
43     if  ( sd->sdSegmentInfos )
44 	{ free( sd->sdSegmentInfos ); }
45 
46     return;
47     }
48 
docInitShapeDrawingAllocated(ShapeDrawing * sd)49 void docInitShapeDrawingAllocated(	ShapeDrawing *	sd )
50     {
51     sd->sdVertexCount= 0;
52     sd->sdVertices= (Point2DI *)0;
53 
54     sd->sdWrapPolygonVertexCount= 0;
55     sd->sdWrapPolygonVertices= (Point2DI *)0;
56 
57     sd->sdSegmentInfoCount= 0;
58     sd->sdSegmentInfos= (int *)0;
59 
60     return;
61     }
62 
docInitShapeDrawing(ShapeDrawing * sd)63 void docInitShapeDrawing(	ShapeDrawing *	sd )
64     {
65     sd->sdXPosition= 0;
66     sd->sdXReference= FXrefCOLUMN;
67     sd->sdYPosition= 0;
68     sd->sdYReference= FYrefPARA;
69 
70     sd->sd_fUseShapeAnchor= 1;
71     sd->sd_fLayoutInCell= 0;
72     sd->sd_fAllowOverlap= 1;
73     sd->sd_fChangePage= 0;
74 
75 			/************************************************/
76 			/*  Object Type.				*/
77 			/************************************************/
78     sd->sdShapeType= SHPtyFREE;
79     sd->sdRotation= 0;
80 
81     sd->sdWrapDistLeftEmu= 114305;
82     sd->sdWrapDistTopEmu= 0;
83     sd->sdWrapDistRightEmu= 114305;
84     sd->sdWrapDistBottomEmu= 0;
85 
86     sd->sdMasterShape= 0;
87     sd->sdNextShape= 0;
88 
89     sd->sdXLimo= 0;
90     sd->sdYLimo= 0;
91 
92     sd->sd_fIsBullet= 0;
93     sd->sd_fFlipH= 0;
94     sd->sd_fFlipV= 0;
95     sd->sd_fBehindDocument= 0;
96     sd->sd_fIsButton= 0;
97     sd->sd_fHidden= 0;
98     sd->sd_fReallyHidden= 0;
99     sd->sd_fArrowheadsOK= 0;
100     sd->sd_fBackground= 0;
101     sd->sd_fDeleteAttachedObject= 0;
102     sd->sd_fEditedWrap= 0;
103     sd->sd_fHitTestFill= 1;
104     sd->sd_fHitTestLine= 1;
105     sd->sd_fInitiator= 0;
106     sd->sd_fNoFillHitTest= 0;
107     sd->sd_fNoHitTestPicture= 0;
108     sd->sd_fNoLineDrawDash= 0;
109     sd->sd_fOleIcon= 0;
110     sd->sd_fOnDblClickNotify= 0;
111     sd->sd_fOneD= 0;
112     sd->sd_fPreferRelativeSize= 0;
113     sd->sd_fPrint= 1;
114 
115     sd->sd_fPseudoInline= 0;
116 
117 				/****************************************/
118 				/*  Text box.				*/
119 				/****************************************/
120     sd->sd_dxTextLeft= 91440;
121     sd->sd_dyTextTop= 45720;
122     sd->sd_dxTextRight= 91440;
123     sd->sd_dyTextBottom= 45720;
124 
125     sd->sd_scaleText= 0;
126     sd->sd_lTxid= 0;
127 
128     sd->sd_WrapText= SHAPEtextWRAP_SQUARE;
129     sd->sd_anchorText= 0;
130     sd->sd_txflTextFlow= 0;
131     sd->sd_cdirFont= 0;
132 
133     sd->sd_fAutoTextMargin= 0;
134     sd->sd_fRotateText= 0;
135     sd->sd_fSelectText= 1;
136     sd->sd_fFitShapeToText= 0;
137     sd->sd_fFitTextToShape= 0;
138 
139 			/************************************************/
140 			/*  Lock.					*/
141 			/************************************************/
142     sd->sd_fLockRotation= 0;
143     sd->sd_fLockAspectRatio= 0;
144     sd->sd_fLockAgainstSelect= 0;
145     sd->sd_fLockCropping= 0;
146     sd->sd_fLockVerticies= 0;
147     sd->sd_fLockText= 0;
148     sd->sd_fLockAdjustHandles= 0;
149     sd->sd_fLockAgainstGrouping= 0;
150     sd->sd_fLockShapeType= 0;
151 
152     sd->sd_fLockPosition= 0;
153 
154 			/************************************************/
155 			/*  Fill.					*/
156 			/************************************************/
157     sd->sdFillType= 0;
158     sd->sdFillblipflags= 0;
159     sd->sdFillFocus= 0;
160     sd->sdFillDztype= 0;
161     sd->sdFillShadeType= 0;
162 
163     sd->sdFillOpacity= 65536;
164     sd->sdFillBackOpacity= 65536;
165 
166     sd->sdFillWidthEmu= 0;
167     sd->sdFillHeightEmu= 0;
168     sd->sdFillAngle= 0;
169 
170     sd->sdFillToLeft= 0;
171     sd->sdFillToTop= 0;
172     sd->sdFillToRight= 0;
173     sd->sdFillToBottom= 0;
174 
175     sd->sdFillOriginX= 0;
176     sd->sdFillOriginY= 0;
177     sd->sdFillShapeOriginX= 0;
178     sd->sdFillShapeOriginY= 0;
179 
180     sd->sdFillRectLeftEmu= 0;
181     sd->sdFillRectTopEmu= 0;
182     sd->sdFillRectRightEmu= 0;
183     sd->sdFillRectBottomEmu= 0;
184 
185     sd->sdFillShadePreset= 0;
186 
187     utilInitRGB8Color( &(sd->sdFillColor) );
188     utilInitRGB8Color( &(sd->sdFillBackColor) );
189     utilInitRGB8Color( &(sd->sdFillCrModColor) );
190 
191     sd->sdFillColor.rgb8Red= 255;
192     sd->sdFillColor.rgb8Green= 255;
193     sd->sdFillColor.rgb8Blue= 255;
194 
195     sd->sdFillBackColor.rgb8Red= 255;
196     sd->sdFillBackColor.rgb8Green= 255;
197     sd->sdFillBackColor.rgb8Blue= 255;
198 
199     sd->sd_fFilled= 1;
200     sd->sd_fillShape= 1;
201     sd->sd_fillUseRect= 0;
202     sd->sd_fFillOK= 1;
203     sd->sd_fFillShadeShapeOK= 0;
204 
205 			    /********************************************/
206 			    /*  Number/Flag: Line.			*/
207 			    /********************************************/
208     sd->sdLineType= 0;
209 
210     sd->sdLineFillBlipFlags= 0;
211 
212     sd->sdLineFillWidthEmu= 0;
213     sd->sdLineFillHeightEmu= 0;
214     sd->sdLineWidthEmu= 9525;
215 
216     sd->sdLineStyle= 0;
217     sd->sdLineDashing= 0;
218     docInitShapeArrow( &(sd->sdLineHeadArrow) );
219     docInitShapeArrow( &(sd->sdLineTailArrow) );
220     sd->sdLineEndCapStyle= 2;
221     sd->sdLineFillDztype= 0;
222     sd->sdLineJoinStyle= 2;
223 
224     sd->sdLineMiterLimit= 524288;
225 
226     utilInitRGB8Color( &(sd->sdLineColor) );
227     utilInitRGB8Color( &(sd->sdLineBackColor) );
228     utilInitRGB8Color( &(sd->sdLineCrModColor) );
229 
230     sd->sd_fLine= 1;
231     sd->sd_fLineOK= 1;
232 
233     sd->sd_fLineUseShapeAnchor= 0;
234     sd->sd_fColumnLineOK= 0;
235     sd->sd_fColumnLine= 0;
236     sd->sd_fLeftLine= 0;
237     sd->sd_fTopLine= 0;
238     sd->sd_fRightLine= 0;
239     sd->sd_fBottomLine= 0;
240 
241     sd->sd_fColumnHitTestLine= 0;
242     sd->sd_fLeftHitTestLine= 0;
243     sd->sd_fTopHitTestLine= 0;
244     sd->sd_fRightHitTestLine= 0;
245     sd->sd_fBottomHitTestLine= 0;
246 
247     sd->sd_lineFillShape= 0;
248     sd->sd_lineColumnFillShape= 0;
249     sd->sd_lineLeftFillShape= 0;
250     sd->sd_lineTopFillShape= 0;
251     sd->sd_lineRightFillShape= 0;
252     sd->sd_lineBottomFillShape= 0;
253 
254     sd->sd_fInsetPen= 0;
255     sd->sd_fLeftInsetPen= 0;
256     sd->sd_fTopInsetPen= 0;
257     sd->sd_fRightInsetPen= 0;
258     sd->sd_fBottomInsetPen= 0;
259 
260 				/****************************************/
261 				/*  Text box.				*/
262 				/****************************************/
263     sd->sdGeoRect.drX0= 0;
264     sd->sdGeoRect.drY0= 0;
265     sd->sdGeoRect.drX1= 21600;
266     sd->sdGeoRect.drY1= 21600;
267     sd->sdAdjustValue= 0;
268     sd->sdAdjust2Value= 0;
269     sd->sdAdjust3Value= 0;
270     sd->sdAdjust4Value= 0;
271     sd->sdAdjust5Value= 0;
272     sd->sdAdjust6Value= 0;
273     sd->sdAdjust7Value= 0;
274     sd->sdAdjust8Value= 0;
275     sd->sdAdjust9Value= 0;
276     sd->sdAdjust10Value= 0;
277 
278 				/****************************************/
279 				/*  Grouped Shapes			*/
280 				/****************************************/
281     sd->sdRelRect.drX0= 0;
282     sd->sdRelRect.drY0= 0;
283     sd->sdRelRect.drX1= 1;
284     sd->sdRelRect.drY1= 1;
285 
286     sd->sdRelRotation= 0;
287     sd->sdRegroupID= 0;
288 
289     sd->sdGroupRect.drX0= 0;
290     sd->sdGroupRect.drY0= 0;
291     sd->sdGroupRect.drX1= 20000;
292     sd->sdGroupRect.drY1= 20000;
293 
294     sd->sd_fRelChangePage= 0;
295     sd->sd_fRelFlipH= 0;
296     sd->sd_fRelFlipV= 0;
297 
298 			/************************************************/
299 			/*  Shadow.					*/
300 			/************************************************/
301     sd->sdShadowType= 0;
302 
303     sd->sdShadowOpacity= 65536;
304     sd->sdShadowOffsetXEmu= 0;
305     sd->sdShadowOffsetYEmu= 0;
306     sd->sdShadowOffset2XEmu= 25400;
307     sd->sdShadowOffset2YEmu= 25400;
308     sd->sdShadowScaleXToX= 65536;
309     sd->sdShadowScaleYToX= 0;
310     sd->sdShadowScaleXToY= 0;
311     sd->sdShadowScaleYToY= 65536;
312     sd->sdShadowPerspectiveX= 0;
313     sd->sdShadowPerspectiveY= 0;
314     sd->sdShadowWeight= 32768;
315     sd->sdShadowOriginX= 0;
316     sd->sdShadowOriginY= 0;
317 
318     sd->sd_fShadow= 0;
319     sd->sd_fshadowObscured= 0;
320     sd->sd_fshadowOK= 1;
321 
322     utilInitRGB8Color( &(sd->sdShadowColor) );
323     utilInitRGB8Color( &(sd->sdShadowHighlightColor) );
324     utilInitRGB8Color( &(sd->sdShadowCrModColor) );
325     utilInitRGB8Color( &(sd->sdShadowc3DExtrusionColor) );
326     utilInitRGB8Color( &(sd->sdShadowc3DCrModColor) );
327 
328     sd->sdShadowColor.rgb8Red= 128;
329     sd->sdShadowColor.rgb8Green= 128;
330     sd->sdShadowColor.rgb8Blue= 128;
331 
332     sd->sdShadowHighlightColor.rgb8Red= 203;
333     sd->sdShadowHighlightColor.rgb8Green= 203;
334     sd->sdShadowHighlightColor.rgb8Blue= 203;
335 
336 			/************************************************/
337 			/*  Connectors.					*/
338 			/************************************************/
339     sd->sdConnectionSite= 1;
340     sd->sdConnectionStyle= 3;
341 
342 			/************************************************/
343 
344     sd->sd_cropFromLeft= 0;
345     sd->sd_cropFromRight= 0;
346     sd->sd_cropFromTop= 0;
347     sd->sd_cropFromBottom= 0;
348 
349     return;
350     }
351 
352 /************************************************************************/
353 /*									*/
354 /*  Copy a shape.							*/
355 /*									*/
356 /*  2)  Vertices.							*/
357 /*  2)  Wrap polygon.							*/
358 /*  4)  Segment information						*/
359 /*  5)  Text box content.						*/
360 /*									*/
361 /************************************************************************/
362 
docCopyShapeDrawing(ShapeDrawing * to,const ShapeDrawing * from)363 int docCopyShapeDrawing(	ShapeDrawing *		to,
364 				const ShapeDrawing *	from )
365     {
366     int				rval= 0;
367 
368     *to= *from;
369     docInitShapeDrawingAllocated( to );
370 
371     /*  2  */
372     to->sdVertices= (Point2DI *)malloc( from->sdVertexCount* sizeof(Point2DI) );
373     if  ( ! to->sdVertices )
374 	{
375 	LXDEB(from->sdVertexCount,to->sdVertices);
376 	rval= -1; goto ready;
377 	}
378 
379     /*  3  */
380     to->sdWrapPolygonVertices= (Point2DI *)malloc(
381 		    from->sdWrapPolygonVertexCount* sizeof(Point2DI) );
382     if  ( ! to->sdWrapPolygonVertices )
383 	{
384 	LXDEB(from->sdWrapPolygonVertexCount,to->sdWrapPolygonVertices);
385 	rval= -1; goto ready;
386 	}
387 
388     /*  4  */
389     to->sdSegmentInfos= (int *)malloc( from->sdSegmentInfoCount* sizeof(int) );
390     if  ( ! to->sdSegmentInfos )
391 	{
392 	LXDEB(from->sdSegmentInfoCount,to->sdSegmentInfos);
393 	rval= -1; goto ready;
394 	}
395 
396     /*  2  */
397     while( to->sdVertexCount < from->sdVertexCount )
398 	{
399 	to->sdVertices[to->sdVertexCount]= from->sdVertices[to->sdVertexCount];
400 	to->sdVertexCount++;
401 	}
402 
403     /*  3  */
404     while( to->sdWrapPolygonVertexCount < from->sdWrapPolygonVertexCount )
405 	{
406 	to->sdWrapPolygonVertices[to->sdWrapPolygonVertexCount]=
407 		    from->sdWrapPolygonVertices[to->sdWrapPolygonVertexCount];
408 	to->sdWrapPolygonVertexCount++;
409 	}
410 
411     /*  4  */
412     while( to->sdSegmentInfoCount < from->sdSegmentInfoCount )
413 	{
414 	to->sdSegmentInfos[to->sdSegmentInfoCount]=
415 			    from->sdSegmentInfos[to->sdSegmentInfoCount];
416 	to->sdSegmentInfoCount++;
417 	}
418 
419   ready:
420 
421     if  ( rval )
422 	{
423 	docCleanShapeDrawing( to );
424 	docInitShapeDrawingAllocated( to );
425 	}
426 
427     return rval;
428     }
429 
430 /************************************************************************/
431 /*									*/
432 /*  Translate shape type to string.					*/
433 /*									*/
434 /************************************************************************/
435 
docShapeTypeString(int shapeType)436 const char * docShapeTypeString(	int	shapeType )
437     {
438     static char		scratch[12];
439 
440     switch( shapeType )
441 	{
442 	case SHPtyFREEFORM_OR_NON_AUTOSHAPE: return "FREEFORM_OR_NON_AUTOSHAPE";
443 	case SHPtyRECTANGLE: return "RECTANGLE";
444 	case SHPtyROUND_RECTANGLE: return "ROUND_RECTANGLE";
445 	case SHPtyELLIPSE: return "ELLIPSE";
446 	case SHPtyDIAMOND: return "DIAMOND";
447 	case SHPtyISOSCELES_TRIANGLE: return "ISOSCELES_TRIANGLE";
448 	case SHPtyRIGHT_TRIANGLE: return "RIGHT_TRIANGLE";
449 	case SHPtyPARALLELOGRAM: return "PARALLELOGRAM";
450 	case SHPtyTRAPEZOID: return "TRAPEZOID";
451 	case SHPtyHEXAGON: return "HEXAGON";
452 	case SHPtyOCTAGON: return "OCTAGON";
453 	case SHPtyPLUS_SIGN: return "PLUS_SIGN";
454 	case SHPtySTAR: return "STAR";
455 	case SHPtyARROW: return "ARROW";
456 	case SHPtyTHICK_ARROW: return "THICK_ARROW";
457 	case SHPtyHOME_PLATE: return "HOME_PLATE";
458 	case SHPtyCUBE: return "CUBE";
459 	case SHPtyBALLOON: return "BALLOON";
460 	case SHPtySEAL: return "SEAL";
461 	case SHPtyARC: return "ARC";
462 	case SHPtyLINE: return "LINE";
463 	case SHPtyPLAQUE: return "PLAQUE";
464 	case SHPtyCAN: return "CAN";
465 	case SHPtyDONUT: return "DONUT";
466 	case SHPtyTEXT_SIMPLE: return "TEXT_SIMPLE";
467 	case SHPtyTEXT_OCTAGON: return "TEXT_OCTAGON";
468 	case SHPtyTEXT_HEXAGON: return "TEXT_HEXAGON";
469 	case SHPtyTEXT_CURVE: return "TEXT_CURVE";
470 	case SHPtyTEXT_WAVE: return "TEXT_WAVE";
471 	case SHPtyTEXT_RING: return "TEXT_RING";
472 	case SHPtyTEXT_ON_CURVE: return "TEXT_ON_CURVE";
473 	case SHPtyTEXT_ON_RING: return "TEXT_ON_RING";
474 	case SHPtyCALLOUT_1: return "CALLOUT_1";
475 	case SHPtyCALLOUT_2: return "CALLOUT_2";
476 	case SHPtyCALLOUT_3: return "CALLOUT_3";
477 	case SHPtyACCENT_CALLOUT_1: return "ACCENT_CALLOUT_1";
478 	case SHPtyACCENT_CALLOUT_2: return "ACCENT_CALLOUT_2";
479 	case SHPtyACCENT_CALLOUT_3: return "ACCENT_CALLOUT_3";
480 	case SHPtyBORDER_CALLOUT_1: return "BORDER_CALLOUT_1";
481 	case SHPtyBORDER_CALLOUT_2: return "BORDER_CALLOUT_2";
482 	case SHPtyBORDER_CALLOUT_3: return "BORDER_CALLOUT_3";
483 	case SHPtyACCENT_BORDER_CALLOUT_1: return "ACCENT_BORDER_CALLOUT_1";
484 	case SHPtyACCENT_BORDER_CALLOUT_2: return "ACCENT_BORDER_CALLOUT_2";
485 	case SHPtyACCENT_BORDER_CALLOUT_3: return "ACCENT_BORDER_CALLOUT_3";
486 	case SHPtyRIBBON: return "RIBBON";
487 	case SHPtyRIBBON2: return "RIBBON2";
488 	case SHPtyCHEVRON: return "CHEVRON";
489 	case SHPtyPENTAGON: return "PENTAGON";
490 	case SHPtyNO_SMOKING: return "NO_SMOKING";
491 	case SHPtySEAL8: return "SEAL8";
492 	case SHPtySEAL16: return "SEAL16";
493 	case SHPtySEAL32: return "SEAL32";
494 	case SHPtyWEDGE_RECT_CALLOUT: return "WEDGE_RECT_CALLOUT";
495 	case SHPtyWEDGE_RRECT_CALLOUT: return "WEDGE_RRECT_CALLOUT";
496 	case SHPtyWEDGE_ELLIPSE_CALLOUT: return "WEDGE_ELLIPSE_CALLOUT";
497 	case SHPtyWAVE: return "WAVE";
498 	case SHPtyFOLDED_CORNER: return "FOLDED_CORNER";
499 	case SHPtyLEFT_ARROW: return "LEFT_ARROW";
500 	case SHPtyDOWN_ARROW: return "DOWN_ARROW";
501 	case SHPtyUP_ARROW: return "UP_ARROW";
502 	case SHPtyLEFT_RIGHT_ARROW: return "LEFT_RIGHT_ARROW";
503 	case SHPtyUP_DOWN_ARROW: return "UP_DOWN_ARROW";
504 	case SHPtyIRREGULARSEAL1: return "IRREGULARSEAL1";
505 	case SHPtyIRREGULARSEAL2: return "IRREGULARSEAL2";
506 	case SHPtyLIGHTNING_BOLT: return "LIGHTNING_BOLT";
507 	case SHPtyHEART: return "HEART";
508 	case SHPtyPICTURE_FRAME: return "PICTURE_FRAME";
509 	case SHPtyQUAD_ARROW: return "QUAD_ARROW";
510 	case SHPtyLEFT_ARROW_CALLOUT: return "LEFT_ARROW_CALLOUT";
511 	case SHPtyRIGHT_ARROW_CALLOUT: return "RIGHT_ARROW_CALLOUT";
512 	case SHPtyUP_ARROW_CALLOUT: return "UP_ARROW_CALLOUT";
513 	case SHPtyDOWN_ARROW_CALLOUT: return "DOWN_ARROW_CALLOUT";
514 	case SHPtyLEFT_RIGHT_ARROW_CALLOUT: return "LEFT_RIGHT_ARROW_CALLOUT";
515 	case SHPtyUP_DOWN_ARROW_CALLOUT: return "UP_DOWN_ARROW_CALLOUT";
516 	case SHPtyQUAD_ARROW_CALLOUT: return "QUAD_ARROW_CALLOUT";
517 	case SHPtyBEVEL: return "BEVEL";
518 	case SHPtyLEFT_BRACKET: return "LEFT_BRACKET";
519 	case SHPtyRIGHT_BRACKET: return "RIGHT_BRACKET";
520 	case SHPtyLEFT_BRACE: return "LEFT_BRACE";
521 	case SHPtyRIGHT_BRACE: return "RIGHT_BRACE";
522 	case SHPtyLEFT_UP_ARROW: return "LEFT_UP_ARROW";
523 	case SHPtyBENT_UP_ARROW: return "BENT_UP_ARROW";
524 	case SHPtyBENT_ARROW: return "BENT_ARROW";
525 	case SHPtySEAL24: return "SEAL24";
526 	case SHPtySTRIPED_RIGHT_ARROW: return "STRIPED_RIGHT_ARROW";
527 	case SHPtyNOTCHED_RIGHT_ARROW: return "NOTCHED_RIGHT_ARROW";
528 	case SHPtyBLOCK_ARC: return "BLOCK_ARC";
529 	case SHPtySMILEY_FACE: return "SMILEY_FACE";
530 	case SHPtyVERTICAL_SCROLL: return "VERTICAL_SCROLL";
531 	case SHPtyHORIZONTAL_SCROLL: return "HORIZONTAL_SCROLL";
532 	case SHPtyCIRCULAR_ARROW: return "CIRCULAR_ARROW";
533 	case SHPtyNOTCHED_CIRCULAR_ARROW: return "NOTCHED_CIRCULAR_ARROW";
534 	case SHPtyUTURN_ARROW: return "UTURN_ARROW";
535 	case SHPtyCURVED_RIGHT_ARROW: return "CURVED_RIGHT_ARROW";
536 	case SHPtyCURVED_LEFT_ARROW: return "CURVED_LEFT_ARROW";
537 	case SHPtyCURVED_UP_ARROW: return "CURVED_UP_ARROW";
538 	case SHPtyCURVED_DOWN_ARROW: return "CURVED_DOWN_ARROW";
539 	case SHPtyCLOUD_CALLOUT: return "CLOUD_CALLOUT";
540 	case SHPtyELLIPSE_RIBBON: return "ELLIPSE_RIBBON";
541 	case SHPtyELLIPSE_RIBBON_2: return "ELLIPSE_RIBBON_2";
542 	case SHPtyFLOW_CHART_PROCESS: return "FLOW_CHART_PROCESS";
543 	case SHPtyFLOW_CHART_DECISION: return "FLOW_CHART_DECISION";
544 	case SHPtyFLOW_CHART_INPUT_OUTPUT: return "FLOW_CHART_INPUT_OUTPUT";
545 	case SHPtyFLOW_CHART_PREDEFINED_PROCESS:
546 				    return "FLOW_CHART_PREDEFINED_PROCESS";
547 	case SHPtyFLOW_CHART_INTERNAL_STORAGE:
548 				    return "FLOW_CHART_INTERNAL_STORAGE";
549 	case SHPtyFLOW_CHART_DOCUMENT: return "FLOW_CHART_DOCUMENT";
550 	case SHPtyFLOW_CHART_MULTIDOCUMENT: return "FLOW_CHART_MULTIDOCUMENT";
551 	case SHPtyFLOW_CHART_TERMINATOR: return "FLOW_CHART_TERMINATOR";
552 	case SHPtyFLOW_CHART_PREPARATION: return "FLOW_CHART_PREPARATION";
553 	case SHPtyFLOW_CHART_MANUAL_INPUT: return "FLOW_CHART_MANUAL_INPUT";
554 	case SHPtyFLOW_CHART_MANUAL_OPERATION:
555 				    return "FLOW_CHART_MANUAL_OPERATION";
556 	case SHPtyFLOW_CHART_CONNECTOR: return "FLOW_CHART_CONNECTOR";
557 	case SHPtyFLOW_CHART_PUNCHED_CARD: return "FLOW_CHART_PUNCHED_CARD";
558 	case SHPtyFLOW_CHART_PUNCHED_TAPE: return "FLOW_CHART_PUNCHED_TAPE";
559 	case SHPtyFLOW_CHART_SUMMING_JUNCTION:
560 				    return "FLOW_CHART_SUMMING_JUNCTION";
561 	case SHPtyFLOW_CHART_OR: return "FLOW_CHART_OR";
562 	case SHPtyFLOW_CHART_COLLATE: return "FLOW_CHART_COLLATE";
563 	case SHPtyFLOW_CHART_SORT: return "FLOW_CHART_SORT";
564 	case SHPtyFLOW_CHART_EXTRACT: return "FLOW_CHART_EXTRACT";
565 	case SHPtyFLOW_CHART_MERGE: return "FLOW_CHART_MERGE";
566 	case SHPtyFLOW_CHART_OFFLINE_STORAGE:
567 					return "FLOW_CHART_OFFLINE_STORAGE";
568 	case SHPtyFLOW_CHART_ONLINE_STORAGE: return "FLOW_CHART_ONLINE_STORAGE";
569 	case SHPtyFLOW_CHART_MAGNETIC_TAPE: return "FLOW_CHART_MAGNETIC_TAPE";
570 	case SHPtyFLOW_CHART_MAGNETIC_DISK: return "FLOW_CHART_MAGNETIC_DISK";
571 	case SHPtyFLOW_CHART_MAGNETIC_DRUM: return "FLOW_CHART_MAGNETIC_DRUM";
572 	case SHPtyFLOW_CHART_DISPLAY: return "FLOW_CHART_DISPLAY";
573 	case SHPtyFLOW_CHART_DELAY: return "FLOW_CHART_DELAY";
574 	case SHPtyTEXT_PLAIN_TEXT: return "TEXT_PLAIN_TEXT";
575 	case SHPtyTEXT_STOP: return "TEXT_STOP";
576 	case SHPtyTEXT_TRIANGLE: return "TEXT_TRIANGLE";
577 	case SHPtyTEXT_TRIANGLE_INVERTED: return "TEXT_TRIANGLE_INVERTED";
578 	case SHPtyTEXT_CHEVRON: return "TEXT_CHEVRON";
579 	case SHPtyTEXT_CHEVRON_INVERTED: return "TEXT_CHEVRON_INVERTED";
580 	case SHPtyTEXT_RING_INSIDE: return "TEXT_RING_INSIDE";
581 	case SHPtyTEXT_RING_OUTSIDE: return "TEXT_RING_OUTSIDE";
582 	case SHPtyTEXT_ARCH_UP_CURVE: return "TEXT_ARCH_UP_CURVE";
583 	case SHPtyTEXT_ARCH_DOWN_CURVE: return "TEXT_ARCH_DOWN_CURVE";
584 	case SHPtyTEXT_CIRCLE_CURVE: return "TEXT_CIRCLE_CURVE";
585 	case SHPtyTEXT_BUTTON_CURVE: return "TEXT_BUTTON_CURVE";
586 	case SHPtyTEXT_ARCH_UP_POUR: return "TEXT_ARCH_UP_POUR";
587 	case SHPtyTEXT_ARCH_DOWN_POUR: return "TEXT_ARCH_DOWN_POUR";
588 	case SHPtyTEXT_CIRCLE_POUR: return "TEXT_CIRCLE_POUR";
589 	case SHPtyTEXT_BUTTON_POUR: return "TEXT_BUTTON_POUR";
590 	case SHPtyTEXT_CURVE_UP: return "TEXT_CURVE_UP";
591 	case SHPtyTEXT_CURVE_DOWN: return "TEXT_CURVE_DOWN";
592 	case SHPtyTEXT_CASCADE_UP: return "TEXT_CASCADE_UP";
593 	case SHPtyTEXT_CASCADE_DOWN: return "TEXT_CASCADE_DOWN";
594 	case SHPtyTEXT_WAVE1: return "TEXT_WAVE1";
595 	case SHPtyTEXT_WAVE2: return "TEXT_WAVE2";
596 	case SHPtyTEXT_WAVE3: return "TEXT_WAVE3";
597 	case SHPtyTEXT_WAVE4: return "TEXT_WAVE4";
598 	case SHPtyTEXT_INFLATE: return "TEXT_INFLATE";
599 	case SHPtyTEXT_DEFLATE: return "TEXT_DEFLATE";
600 	case SHPtyTEXT_INFLATE_BOTTOM: return "TEXT_INFLATE_BOTTOM";
601 	case SHPtyTEXT_DEFLATE_BOTTOM: return "TEXT_DEFLATE_BOTTOM";
602 	case SHPtyTEXT_INFLATE_TOP: return "TEXT_INFLATE_TOP";
603 	case SHPtyTEXT_DEFLATE_TOP: return "TEXT_DEFLATE_TOP";
604 	case SHPtyTEXT_DEFLATE_INFLATE: return "TEXT_DEFLATE_INFLATE";
605 	case SHPtyTEXT_DEFLATE_INFLATE_DEFLATE:
606 					return "TEXT_DEFLATE_INFLATE_DEFLATE";
607 	case SHPtyTEXT_FADE_RIGHT: return "TEXT_FADE_RIGHT";
608 	case SHPtyTEXT_FADE_LEFT: return "TEXT_FADE_LEFT";
609 	case SHPtyTEXT_FADE_UP: return "TEXT_FADE_UP";
610 	case SHPtyTEXT_FADE_DOWN: return "TEXT_FADE_DOWN";
611 	case SHPtyTEXT_SLANT_UP: return "TEXT_SLANT_UP";
612 	case SHPtyTEXT_SLANT_DOWN: return "TEXT_SLANT_DOWN";
613 	case SHPtyTEXT_CAN_UP: return "TEXT_CAN_UP";
614 	case SHPtyTEXT_CAN_DOWN: return "TEXT_CAN_DOWN";
615 	case SHPtyFLOW_CHART_ALTERNATE_PROCESS:
616 					return "FLOW_CHART_ALTERNATE_PROCESS";
617 	case SHPtyFLOW_CHART_OFF_PAGE_CONNECTOR:
618 					return "FLOW_CHART_OFF_PAGE_CONNECTOR";
619 	case SHPtyCALLOUT_90: return "CALLOUT_90";
620 	case SHPtyACCENT_CALLOUT_90: return "ACCENT_CALLOUT_90";
621 	case SHPtyBORDER_CALLOUT_90: return "BORDER_CALLOUT_90";
622 	case SHPtyACCENT_BORDER_CALLOUT_90: return "ACCENT_BORDER_CALLOUT_90";
623 	case SHPtyLEFT_RIGHT_UP_ARROW: return "LEFT_RIGHT_UP_ARROW";
624 	case SHPtySUN: return "SUN";
625 	case SHPtyMOON: return "MOON";
626 	case SHPtyBRACKET_PAIR: return "BRACKET_PAIR";
627 	case SHPtyBRACE_PAIR: return "BRACE_PAIR";
628 	case SHPtySEAL4: return "SEAL4";
629 	case SHPtyDOUBLE_WAVE: return "DOUBLE_WAVE";
630 	case SHPtyHOST_CONTROL: return "HOST_CONTROL";
631 	case SHPtyTEXT_BOX: return "TEXT_BOX";
632 
633 	case SHPtyUNKNOWN: return "UNKNOWN";
634 	case SHPtyGROUP: return "GROUP";
635 	case SHPtyPICPROP: return "PICPROP";
636 
637 	default:
638 	    sprintf( scratch, "SHPty%d", shapeType );
639 	    return scratch;
640 	}
641     }
642 
docSetShapeDrawingProperty(ShapeDrawing * sd,int prop,long val)643 int docSetShapeDrawingProperty(	ShapeDrawing *		sd,
644 				int			prop,
645 				long			val )
646     {
647     switch( prop )
648 	{
649 	case DSHPprop_posh:
650 	    sd->sdXPosition= val;
651 	    break;
652 	case DSHPprop_posrelh:
653 	    sd->sdXReference= val;
654 	    break;
655 	case DSHPprop_posv:
656 	    sd->sdYPosition= val;
657 	    break;
658 	case DSHPprop_posrelv:
659 	    sd->sdYReference= val;
660 	    break;
661 
662 	case DSHPprop_fUseShapeAnchor:
663 	    sd->sd_fUseShapeAnchor= val != 0;
664 	    break;
665 	case DSHPprop_fLayoutInCell:
666 	    sd->sd_fLayoutInCell= val != 0;
667 	    break;
668 	case DSHPprop_fAllowOverlap:
669 	    sd->sd_fAllowOverlap= val != 0;
670 	    break;
671 	case DSHPprop_fChangePage:
672 	    sd->sd_fChangePage= val != 0;
673 	    break;
674 
675 	case DSHPprop_shapeType:
676 	    sd->sdShapeType= val;
677 	    break;
678 
679 	case DSHPprop_rotation:
680 	    sd->sdRotation= val;
681 	    break;
682 
683 	case DSHPprop_dxWrapDistLeft:
684 	    sd->sdWrapDistLeftEmu= val;
685 	    break;
686 	case DSHPprop_dyWrapDistTop:
687 	    sd->sdWrapDistTopEmu= val;
688 	    break;
689 	case DSHPprop_dxWrapDistRight:
690 	    sd->sdWrapDistRightEmu= val;
691 	    break;
692 	case DSHPprop_dyWrapDistBottom:
693 	    sd->sdWrapDistBottomEmu= val;
694 	    break;
695 
696 	case DSHPprop_hspMaster:
697 	    sd->sdMasterShape= val;
698 	    break;
699 	case DSHPprop_hspNext:
700 	    sd->sdNextShape= val;
701 	    break;
702 
703 	case DSHPprop_xLimo:
704 	    sd->sdXLimo= val;
705 	    break;
706 	case DSHPprop_yLimo:
707 	    sd->sdXLimo= val;
708 	    break;
709 
710 	case DSHPprop_fIsBullet:
711 	    sd->sd_fIsBullet= val != 0;
712 	    break;
713 	case DSHPprop_fFlipV:
714 	    sd->sd_fFlipV= val != 0;
715 	    break;
716 	case DSHPprop_fFlipH:
717 	    sd->sd_fFlipH= val != 0;
718 	    break;
719 	case DSHPprop_fBehindDocument:
720 	    sd->sd_fBehindDocument= val != 0;
721 	    break;
722 	case DSHPprop_fIsButton:
723 	    sd->sd_fIsButton= val != 0;
724 	    break;
725 	case DSHPprop_fHidden:
726 	    sd->sd_fHidden= val != 0;
727 	    break;
728 	case DSHPprop_fReallyHidden:
729 	    sd->sd_fReallyHidden= val != 0;
730 	    break;
731 	case DSHPprop_fArrowheadsOK:
732 	    sd->sd_fArrowheadsOK= val != 0;
733 	    break;
734 	case DSHPprop_fBackground:
735 	    sd->sd_fBackground= val != 0;
736 	    break;
737 	case DSHPprop_fDeleteAttachedObject:
738 	    sd->sd_fDeleteAttachedObject= val != 0;
739 	    break;
740 	case DSHPprop_fEditedWrap:
741 	    sd->sd_fEditedWrap= val != 0;
742 	    break;
743 	case DSHPprop_fHitTestFill:
744 	    sd->sd_fHitTestFill= val != 0;
745 	    break;
746 	case DSHPprop_fHitTestLine:
747 	    sd->sd_fHitTestLine= val != 0;
748 	    break;
749 	case DSHPprop_fInitiator:
750 	    sd->sd_fInitiator= val != 0;
751 	    break;
752 	case DSHPprop_fNoFillHitTest:
753 	    sd->sd_fNoFillHitTest= val != 0;
754 	    break;
755 	case DSHPprop_fNoHitTestPicture:
756 	    sd->sd_fNoHitTestPicture= val != 0;
757 	    break;
758 	case DSHPprop_fNoLineDrawDash:
759 	    sd->sd_fNoLineDrawDash= val != 0;
760 	    break;
761 	case DSHPprop_fOleIcon:
762 	    sd->sd_fOleIcon= val != 0;
763 	    break;
764 	case DSHPprop_fOnDblClickNotify:
765 	    sd->sd_fOnDblClickNotify= val != 0;
766 	    break;
767 	case DSHPprop_fOneD:
768 	    sd->sd_fOneD= val != 0;
769 	    break;
770 	case DSHPprop_fPreferRelativeSize:
771 	    sd->sd_fPreferRelativeSize= val != 0;
772 	    break;
773 	case DSHPprop_fPrint:
774 	    sd->sd_fPrint= val != 0;
775 	    break;
776 
777 	case DSHPprop_fPseudoInline:
778 	    sd->sd_fPseudoInline= val != 0;
779 	    break;
780 
781 	case DSHPprop_fLockRotation:
782 	    sd->sd_fLockRotation= val != 0;
783 	    break;
784 	case DSHPprop_fLockAspectRatio:
785 	    sd->sd_fLockAspectRatio= val != 0;
786 	    break;
787 	case DSHPprop_fLockAgainstSelect:
788 	    sd->sd_fLockAgainstSelect= val != 0;
789 	    break;
790 	case DSHPprop_fLockCropping:
791 	    sd->sd_fLockCropping= val != 0;
792 	    break;
793 	case DSHPprop_fLockVerticies:
794 	    sd->sd_fLockVerticies= val != 0;
795 	    break;
796 	case DSHPprop_fLockText:
797 	    sd->sd_fLockText= val != 0;
798 	    break;
799 	case DSHPprop_fLockAdjustHandles:
800 	    sd->sd_fLockAdjustHandles= val != 0;
801 	    break;
802 	case DSHPprop_fLockAgainstGrouping:
803 	    sd->sd_fLockAgainstGrouping= val != 0;
804 	    break;
805 	case DSHPprop_fLockShapeType:
806 	    sd->sd_fLockShapeType= val != 0;
807 	    break;
808 
809 	case DSHPprop_fLockPosition:
810 	    sd->sd_fLockPosition= val != 0;
811 	    break;
812 
813 	case DSHPprop_fillType:
814 	    sd->sdFillType= val;
815 	    break;
816 	case DSHPprop_fillOpacity:
817 	    sd->sdFillOpacity= val;
818 	    break;
819 	case DSHPprop_fillBackOpacity:
820 	    sd->sdFillBackOpacity= val;
821 	    break;
822 
823 	case DSHPprop_fillblipflags:
824 	    sd->sdFillblipflags= val;
825 	    break;
826 
827 	case DSHPprop_fillWidth:
828 	    sd->sdFillWidthEmu= val;
829 	    break;
830 	case DSHPprop_fillHeight:
831 	    sd->sdFillHeightEmu= val;
832 	    break;
833 	case DSHPprop_fillAngle:
834 	    sd->sdFillAngle= val;
835 	    break;
836 	case DSHPprop_fillFocus:
837 	    sd->sdFillFocus= val;
838 	    break;
839 
840 	case DSHPprop_fillToLeft:
841 	    sd->sdFillToLeft= val;
842 	    break;
843 	case DSHPprop_fillToTop:
844 	    sd->sdFillToTop= val;
845 	    break;
846 	case DSHPprop_fillToRight:
847 	    sd->sdFillToRight= val;
848 	    break;
849 	case DSHPprop_fillToBottom:
850 	    sd->sdFillToBottom= val;
851 	    break;
852 
853 	case DSHPprop_fillOriginX:
854 	    sd->sdFillOriginX= val;
855 	    break;
856 	case DSHPprop_fillOriginY:
857 	    sd->sdFillOriginY= val;
858 	    break;
859 	case DSHPprop_fillShapeOriginX:
860 	    sd->sdFillShapeOriginX= val;
861 	    break;
862 	case DSHPprop_fillShapeOriginY:
863 	    sd->sdFillShapeOriginY= val;
864 	    break;
865 
866 	case DSHPprop_fillDztype:
867 	    sd->sdFillDztype= val;
868 	    break;
869 
870 	case DSHPprop_fillRectLeft:
871 	    sd->sdFillRectLeftEmu= val;
872 	    break;
873 	case DSHPprop_fillRectTop:
874 	    sd->sdFillRectTopEmu= val;
875 	    break;
876 	case DSHPprop_fillRectRight:
877 	    sd->sdFillRectRightEmu= val;
878 	    break;
879 	case DSHPprop_fillRectBottom:
880 	    sd->sdFillRectBottomEmu= val;
881 	    break;
882 
883 	case DSHPprop_fillShadePreset:
884 	    sd->sdFillShadePreset= val;
885 	    break;
886 	case DSHPprop_fillShadeType:
887 	    sd->sdFillShadeType= val;
888 	    break;
889 
890 	case DSHPprop_fFilled:
891 	    sd->sd_fFilled= val != 0;
892 	    break;
893 	case DSHPprop_fillShape:
894 	    sd->sd_fillShape= val != 0;
895 	    break;
896 	case DSHPprop_fillUseRect:
897 	    sd->sd_fillUseRect= val != 0;
898 	    break;
899 	case DSHPprop_fFillOK:
900 	    sd->sd_fFillOK= val != 0;
901 	    break;
902 	case DSHPprop_fFillShadeShapeOK:
903 	    sd->sd_fFillShadeShapeOK= val != 0;
904 	    break;
905 
906 	case DSHPprop_lineType:
907 	    sd->sdLineType= val;
908 	    break;
909 
910 	case DSHPprop_lineFillBlipFlags:
911 	    sd->sdLineFillBlipFlags= val;
912 	    break;
913 
914 	case DSHPprop_lineFillWidth:
915 	    sd->sdLineFillWidthEmu= val;
916 	    break;
917 	case DSHPprop_lineFillHeight:
918 	    sd->sdLineFillHeightEmu= val;
919 	    break;
920 	case DSHPprop_lineWidth:
921 	    sd->sdLineWidthEmu= val;
922 	    break;
923 
924 	case DSHPprop_lineStyle:
925 	    sd->sdLineStyle= val;
926 	    break;
927 	case DSHPprop_lineDashing:
928 	    sd->sdLineDashing= val;
929 	    break;
930 	case DSHPprop_lineStartArrowhead:
931 	    sd->sdLineHeadArrow.saArrowHead= val;
932 	    break;
933 	case DSHPprop_lineEndArrowhead:
934 	    sd->sdLineTailArrow.saArrowHead= val;
935 	    break;
936 	case DSHPprop_lineStartArrowWidth:
937 	    sd->sdLineHeadArrow.saArrowWidth= val;
938 	    break;
939 	case DSHPprop_lineStartArrowLength:
940 	    sd->sdLineHeadArrow.saArrowLength= val;
941 	    break;
942 	case DSHPprop_lineEndArrowWidth:
943 	    sd->sdLineTailArrow.saArrowWidth= val;
944 	    break;
945 	case DSHPprop_lineEndArrowLength:
946 	    sd->sdLineTailArrow.saArrowLength= val;
947 	    break;
948 	case DSHPprop_lineEndCapStyle:
949 	    sd->sdLineEndCapStyle= val;
950 	    break;
951 	case DSHPprop_lineFillDztype:
952 	    sd->sdLineFillDztype= val;
953 	    break;
954 	case DSHPprop_lineJoinStyle:
955 	    sd->sdLineJoinStyle= val;
956 	    break;
957 
958 	case DSHPprop_lineMiterLimit:
959 	    sd->sdLineMiterLimit= val;
960 	    break;
961 
962 	case DSHPprop_fLine:
963 	    sd->sd_fLine= val != 0;
964 	    break;
965 	case DSHPprop_fLineOK:
966 	    sd->sd_fLineOK= val != 0;
967 	    break;
968 
969 	case DSHPprop_fLineUseShapeAnchor:
970 	    sd->sd_fLineUseShapeAnchor= val != 0;
971 	    break;
972 	case DSHPprop_fColumnLineOK:
973 	    sd->sd_fColumnLineOK= val != 0;
974 	    break;
975 	case DSHPprop_fColumnLine:
976 	    sd->sd_fColumnLine= val != 0;
977 	    break;
978 	case DSHPprop_fLeftLine:
979 	    sd->sd_fLeftLine= val != 0;
980 	    break;
981 	case DSHPprop_fTopLine:
982 	    sd->sd_fTopLine= val != 0;
983 	    break;
984 	case DSHPprop_fRightLine:
985 	    sd->sd_fRightLine= val != 0;
986 	    break;
987 	case DSHPprop_fBottomLine:
988 	    sd->sd_fBottomLine= val != 0;
989 	    break;
990 
991 	case DSHPprop_fColumnHitTestLine:
992 	    sd->sd_fColumnHitTestLine= val != 0;
993 	    break;
994 	case DSHPprop_fLeftHitTestLine:
995 	    sd->sd_fLeftHitTestLine= val != 0;
996 	    break;
997 	case DSHPprop_fTopHitTestLine:
998 	    sd->sd_fTopHitTestLine= val != 0;
999 	    break;
1000 	case DSHPprop_fRightHitTestLine:
1001 	    sd->sd_fRightHitTestLine= val != 0;
1002 	    break;
1003 	case DSHPprop_fBottomHitTestLine:
1004 	    sd->sd_fBottomHitTestLine= val != 0;
1005 	    break;
1006 
1007 	case DSHPprop_lineFillShape:
1008 	    sd->sd_lineFillShape= val != 0;
1009 	    break;
1010 	case DSHPprop_lineColumnFillShape:
1011 	    sd->sd_lineColumnFillShape= val != 0;
1012 	    break;
1013 	case DSHPprop_lineLeftFillShape:
1014 	    sd->sd_lineLeftFillShape= val != 0;
1015 	    break;
1016 	case DSHPprop_lineTopFillShape:
1017 	    sd->sd_lineTopFillShape= val != 0;
1018 	    break;
1019 	case DSHPprop_lineRightFillShape:
1020 	    sd->sd_lineRightFillShape= val != 0;
1021 	    break;
1022 	case DSHPprop_lineBottomFillShape:
1023 	    sd->sd_lineBottomFillShape= val != 0;
1024 	    break;
1025 
1026 	case DSHPprop_fInsetPen:
1027 	    sd->sd_fInsetPen= val != 0;
1028 	    break;
1029 	case DSHPprop_fLeftInsetPen:
1030 	    sd->sd_fLeftInsetPen= val != 0;
1031 	    break;
1032 	case DSHPprop_fTopInsetPen:
1033 	    sd->sd_fTopInsetPen= val != 0;
1034 	    break;
1035 	case DSHPprop_fRightInsetPen:
1036 	    sd->sd_fRightInsetPen= val != 0;
1037 	    break;
1038 	case DSHPprop_fBottomInsetPen:
1039 	    sd->sd_fBottomInsetPen= val != 0;
1040 	    break;
1041 
1042 	case DSHPprop_relLeft:
1043 	    sd->sdRelRect.drX0= val;
1044 	    break;
1045 	case DSHPprop_relTop:
1046 	    sd->sdRelRect.drY0= val;
1047 	    break;
1048 	case DSHPprop_relRight:
1049 	    sd->sdRelRect.drX1= val;
1050 	    break;
1051 	case DSHPprop_relBottom:
1052 	    sd->sdRelRect.drY1= val;
1053 	    break;
1054 
1055 	case DSHPprop_relRotation:
1056 	    sd->sdRelRotation= val;
1057 	    break;
1058 	case DSHPprop_lidRegroup:
1059 	    sd->sdRegroupID= val;
1060 	    break;
1061 
1062 	case DSHPprop_groupLeft:
1063 	    sd->sdGroupRect.drX0= val;
1064 	    break;
1065 	case DSHPprop_groupTop:
1066 	    sd->sdGroupRect.drY0= val;
1067 	    break;
1068 	case DSHPprop_groupRight:
1069 	    sd->sdGroupRect.drX1= val;
1070 	    break;
1071 	case DSHPprop_groupBottom:
1072 	    sd->sdGroupRect.drY1= val;
1073 	    break;
1074 
1075 	case DSHPprop_fRelChangePage:
1076 	    sd->sd_fRelChangePage= val != 0;
1077 	    break;
1078 	case DSHPprop_fRelFlipH:
1079 	    sd->sd_fRelFlipH= val != 0;
1080 	    break;
1081 	case DSHPprop_fRelFlipV:
1082 	    sd->sd_fRelFlipV= val != 0;
1083 	    break;
1084 
1085 	case DSHPprop_shadowType:
1086 	    sd->sdShadowType= val;
1087 	    break;
1088 	case DSHPprop_shadowOpacity:
1089 	    sd->sdShadowOpacity= val;
1090 	    break;
1091 
1092 	case DSHPprop_shadowOffsetX:
1093 	    sd->sdShadowOffsetXEmu= val;
1094 	    break;
1095 	case DSHPprop_shadowOffsetY:
1096 	    sd->sdShadowOffsetYEmu= val;
1097 	    break;
1098 
1099 	case DSHPprop_shadowSecondOffsetX:
1100 	    sd->sdShadowOffset2XEmu= val;
1101 	    break;
1102 	case DSHPprop_shadowSecondOffsetY:
1103 	    sd->sdShadowOffset2YEmu= val;
1104 	    break;
1105 
1106 	case DSHPprop_shadowScaleXToX:
1107 	    sd->sdShadowScaleXToX= val;
1108 	    break;
1109 	case DSHPprop_shadowScaleYToX:
1110 	    sd->sdShadowScaleYToX= val;
1111 	    break;
1112 	case DSHPprop_shadowScaleXToY:
1113 	    sd->sdShadowScaleXToY= val;
1114 	    break;
1115 	case DSHPprop_shadowScaleYToY:
1116 	    sd->sdShadowScaleYToY= val;
1117 	    break;
1118 
1119 	case DSHPprop_shadowPerspectiveX:
1120 	    sd->sdShadowPerspectiveX= val;
1121 	    break;
1122 	case DSHPprop_shadowPerspectiveY:
1123 	    sd->sdShadowPerspectiveY= val;
1124 	    break;
1125 
1126 	case DSHPprop_shadowWeight:
1127 	    sd->sdShadowWeight= val;
1128 	    break;
1129 
1130 	case DSHPprop_shadowOriginX:
1131 	    sd->sdShadowOriginX= val;
1132 	    break;
1133 	case DSHPprop_shadowOriginY:
1134 	    sd->sdShadowOriginY= val;
1135 	    break;
1136 
1137 	case DSHPprop_fShadow:
1138 	    sd->sd_fShadow= val != 0;
1139 	    break;
1140 	case DSHPprop_fshadowObscured:
1141 	    sd->sd_fshadowObscured= val != 0;
1142 	    break;
1143 	case DSHPprop_fShadowOK:
1144 	    sd->sd_fshadowOK= val != 0;
1145 	    break;
1146 
1147 	case DSHPprop_cxk:
1148 	    sd->sdConnectionSite= val;
1149 	    break;
1150 	case DSHPprop_cxstyle:
1151 	    sd->sdConnectionStyle= val;
1152 	    break;
1153 
1154 	case DSHPprop_geoLeft:
1155 	    sd->sdGeoRect.drX0= val;
1156 	    break;
1157 	case DSHPprop_geoTop:
1158 	    sd->sdGeoRect.drY0= val;
1159 	    break;
1160 	case DSHPprop_geoRight:
1161 	    sd->sdGeoRect.drX1= val;
1162 	    break;
1163 	case DSHPprop_geoBottom:
1164 	    sd->sdGeoRect.drY1= val;
1165 	    break;
1166 
1167 	case DSHPprop_adjustValue:
1168 	    sd->sdAdjustValue= val;
1169 	    break;
1170 	case DSHPprop_adjust2Value:
1171 	    sd->sdAdjust2Value= val;
1172 	    break;
1173 	case DSHPprop_adjust3Value:
1174 	    sd->sdAdjust3Value= val;
1175 	    break;
1176 	case DSHPprop_adjust4Value:
1177 	    sd->sdAdjust4Value= val;
1178 	    break;
1179 	case DSHPprop_adjust5Value:
1180 	    sd->sdAdjust5Value= val;
1181 	    break;
1182 	case DSHPprop_adjust6Value:
1183 	    sd->sdAdjust6Value= val;
1184 	    break;
1185 	case DSHPprop_adjust7Value:
1186 	    sd->sdAdjust7Value= val;
1187 	    break;
1188 	case DSHPprop_adjust8Value:
1189 	    sd->sdAdjust8Value= val;
1190 	    break;
1191 	case DSHPprop_adjust9Value:
1192 	    sd->sdAdjust9Value= val;
1193 	    break;
1194 	case DSHPprop_adjust10Value:
1195 	    sd->sdAdjust10Value= val;
1196 	    break;
1197 
1198 	case DSHPprop_dxTextLeft:
1199 	    sd->sd_dxTextLeft= val;
1200 	    break;
1201 	case DSHPprop_dyTextTop:
1202 	    sd->sd_dyTextTop= val;
1203 	    break;
1204 	case DSHPprop_dxTextRight:
1205 	    sd->sd_dxTextRight= val;
1206 	    break;
1207 	case DSHPprop_dyTextBottom:
1208 	    sd->sd_dyTextBottom= val;
1209 	    break;
1210 
1211 	case DSHPprop_scaleText:
1212 	    sd->sd_scaleText= val;
1213 	    break;
1214 	case DSHPprop_lTxid:
1215 	    sd->sd_lTxid= val;
1216 	    break;
1217 
1218 	case DSHPprop_WrapText:
1219 	    sd->sd_WrapText= val;
1220 	    break;
1221 	case DSHPprop_anchorText:
1222 	    sd->sd_anchorText= val;
1223 	    break;
1224 	case DSHPprop_txflTextFlow:
1225 	    sd->sd_txflTextFlow= val;
1226 	    break;
1227 	case DSHPprop_cdirFont:
1228 	    sd->sd_cdirFont= val;
1229 	    break;
1230 
1231 	case DSHPprop_fAutoTextMargin:
1232 	    sd->sd_fAutoTextMargin= val != 0;
1233 	    break;
1234 	case DSHPprop_fRotateText:
1235 	    sd->sd_fRotateText= val != 0;
1236 	    break;
1237 	case DSHPprop_fSelectText:
1238 	    sd->sd_fSelectText= val != 0;
1239 	    break;
1240 	case DSHPprop_fFitShapeToText:
1241 	    sd->sd_fFitShapeToText= val != 0;
1242 	    break;
1243 	case DSHPprop_fFitTextToShape:
1244 	    sd->sd_fFitTextToShape= val != 0;
1245 	    break;
1246 
1247 	case DSHPprop_shapePath:
1248 	    sd->sd_shapePath= val;
1249 	    break;
1250 
1251 	case DSHPprop_pictureActive:
1252 	case DSHPprop_pictureId:
1253 	case DSHPprop_pictureContrast:
1254 	case DSHPprop_pictureBrightness:
1255 	case DSHPprop_pictureDblCrMod:
1256 	case DSHPprop_pictureFillCrMod:
1257 	case DSHPprop_pictureLineCrMod:
1258 	    break;
1259 
1260 	case DSHPprop_f3D:
1261 	case DSHPprop_pibFlags:
1262 	case DSHPprop_dhgt:
1263 	case DSHPprop_sizerelh:
1264 	case DSHPprop_sizerelv:
1265 	case DSHPprop_pctHoriz:
1266 	case DSHPprop_pictureGray:
1267 	case DSHPprop_pictureBiLevel:
1268 	case DSHPprop_fPreferRelativeResize:
1269 	case DSHPprop_fScriptAnchor:
1270 	case DSHPprop_fFakeMaster:
1271 	case DSHPprop_fCameFromImgDummy:
1272 	    break;
1273 
1274 	case DSHPprop_fRecolorFillAsPicture:
1275 	    break;
1276 
1277 	case DSHPprop_cropFromLeft:
1278 	    sd->sd_cropFromLeft= val;
1279 	    break;
1280 	case DSHPprop_cropFromRight:
1281 	    sd->sd_cropFromRight= val;
1282 	    break;
1283 	case DSHPprop_cropFromTop:
1284 	    sd->sd_cropFromTop= val;
1285 	    break;
1286 	case DSHPprop_cropFromBottom:
1287 	    sd->sd_cropFromBottom= val;
1288 	    break;
1289 
1290 	default:
1291 	    LDEB(prop); return -1;
1292 	}
1293 
1294     return 0;
1295     }
1296