1 /**************************************************************
2  *
3  * Licensed to the Apache Software Foundation (ASF) under one
4  * or more contributor license agreements.  See the NOTICE file
5  * distributed with this work for additional information
6  * regarding copyright ownership.  The ASF licenses this file
7  * to you under the Apache License, Version 2.0 (the
8  * "License"); you may not use this file except in compliance
9  * with the License.  You may obtain a copy of the License at
10  *
11  *   http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing,
14  * software distributed under the License is distributed on an
15  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16  * KIND, either express or implied.  See the License for the
17  * specific language governing permissions and limitations
18  * under the License.
19  *
20  *************************************************************/
21 
22 
23 
24 // MARKER(update_precomp.py): autogen include statement, do not remove
25 #include "precompiled_filter.hxx"
26 
27 #include <main.hxx>
28 #include <outact.hxx>
29 
30 // ---------------------------------------------------------------
31 
ImplDoClass3()32 void CGM::ImplDoClass3()
33 {
34 	sal_uInt32	nUInteger;
35 	long	nI0, nI1;
36 	switch ( mnElementID )
37 	{
38 		case 0x01 : ComOut( CGM_LEVEL1, "VDC Integer Precision" )
39 		{
40 			switch( ImplGetI( pElement->nIntegerPrecision ) )
41 			{
42 				case 16 : pElement->nVDCIntegerPrecision = 2; break;
43 				case 32 : pElement->nVDCIntegerPrecision = 4; break;
44 				default : mbStatus = sal_False; break;
45 			}
46 		}
47 		break;
48 		case 0x02 : ComOut( CGM_LEVEL1, "VDC Real Precision" )
49 		{
50 			nUInteger = ImplGetUI16();
51 			nI0 = ImplGetI( pElement->nIntegerPrecision );	// exponent
52 			nI1 = ImplGetI( pElement->nIntegerPrecision );	// mantisse
53 			switch( nUInteger )
54 			{
55 				case 0 :
56 					pElement->eVDCRealPrecision = RP_FLOAT;
57 					switch ( nI0 )
58 					{
59 						case 9 :
60 							if ( nI1 != 23 )
61 								mbStatus = sal_False;
62 							pElement->nVDCRealSize = 4;
63 							break;
64 						case 12 :
65 							if ( nI1 != 52 )
66 								mbStatus =sal_False;
67 							pElement->nVDCRealSize = 8;
68 							break;
69 						default:
70 							mbStatus = sal_False;
71 							break;
72 					}
73 					break;
74 				case 1 :
75 					pElement->eVDCRealPrecision = RP_FIXED;
76 					if ( nI0 != nI1 )
77 						mbStatus = sal_False;
78 					if ( nI0 == 16 )
79 						pElement->nVDCRealSize = 4;
80 					else if ( nI0 == 32 )
81 						pElement->nVDCRealSize = 8;
82 					else
83 						mbStatus = sal_False;
84 					break;
85 				default :
86 					mbStatus = sal_False; break;
87 			}
88 		}
89 		break;
90 		case 0x03 : ComOut( CGM_LEVEL1, "Auxiliary Colour" )
91 		{
92 			pElement->nAuxiliaryColor = ImplGetBitmapColor();
93 		}
94 		break;
95 		case 0x04 : ComOut( CGM_LEVEL1, "Transparency" )
96 		{
97 			switch( ImplGetUI16() )
98 			{
99 				case 0 : pElement->eTransparency = T_OFF; break;
100 				case 1 : pElement->eTransparency = T_ON; break;
101 				default : mbStatus = sal_False; break;
102 			}
103 		}
104 		break;
105 		case 0x05 : ComOut( CGM_LEVEL1, "Clip Rectangle" )
106 			ImplGetRectangle( pElement->aClipRect );
107 		break;
108 		case 0x06 : ComOut( CGM_LEVEL1, "Clip Indicator" )
109 		{
110 			switch( ImplGetUI16() )
111 			{
112 				case 0 : pElement->eClipIndicator = CI_OFF; break;
113 				case 1 : pElement->eClipIndicator = CI_ON; break;
114 				default : mbStatus = sal_False; break;
115 			}
116 		}
117 		break;
118 		case 0x07 : ComOut( CGM_LEVEL2, "Line Clipping Mode" ) break;				// NS
119 		case 0x08 : ComOut( CGM_LEVEL2, "Marker Clipping Mode" ) break;				// NS
120 		case 0x09 : ComOut( CGM_LEVEL2, "Edge Clipping Mode" ) break;				// NS
121 		case 0x0a : ComOut( CGM_LEVEL2, "New Region" )
122 			mpOutAct->NewRegion();
123 		break;
124 		case 0x0b : ComOut( CGM_LEVEL2, "Save Primitive Context" ) break;			// NS
125 		case 0x0c : ComOut( CGM_LEVEL2, "Restore Primitive Context" ) break;		// NS
126 		case 0x11 : ComOut( CGM_LEVEL3, "Protection Region Indicator" ) break;
127 		case 0x12 : ComOut( CGM_LEVEL3, "Generalized Text Path Mode" ) break;		// NS
128 		case 0x13 : ComOut( CGM_LEVEL3, "Mitre Limit" )
129 			pElement->nMitreLimit = ImplGetFloat( pElement->eRealPrecision, pElement->nRealSize );
130 		break;																		// NS
131 		case 0x14 : ComOut( CGM_LEVEL3, "Transparent Cell Color" ) break;			// NS
132 		case 0xfc : ComOut( CGM_GDSF_ONLY, "Text Path Alignment Modes" ) break;
133 		case 0xfd : ComOut( CGM_GDSF_ONLY, "Pop Transformation Stack" ) break;
134 		case 0xfe : ComOut( CGM_GDSF_ONLY, "Push Transformation Stack" ) break;
135 		case 0xff : ComOut( CGM_GDSF_ONLY, "Set Patch ID" ) break;
136 		default: ComOut( CGM_UNKNOWN_COMMAND, "" ) break;
137 	}
138 };
139 
140 
141