summaryrefslogtreecommitdiff
path: root/filter/source/graphicfilter/icgm/class3.cxx
blob: 7af697124f5cadd440d6d3e8a1299407732347bc (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/*
 * This file is part of the LibreOffice project.
 *
 * This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
 *
 * This file incorporates work covered by the following license notice:
 *
 *   Licensed to the Apache Software Foundation (ASF) under one or more
 *   contributor license agreements. See the NOTICE file distributed
 *   with this work for additional information regarding copyright
 *   ownership. The ASF licenses this file to you under the Apache
 *   License, Version 2.0 (the "License"); you may not use this file
 *   except in compliance with the License. You may obtain a copy of
 *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
 */


#include <main.hxx>
#include <outact.hxx>



void CGM::ImplDoClass3()
{
    sal_uInt32  nUInteger;
    long    nI0, nI1;
    switch ( mnElementID )
    {
        case 0x01 : /*VDC Integer Precision*/
        {
            switch( ImplGetI( pElement->nIntegerPrecision ) )
            {
                case 16 : pElement->nVDCIntegerPrecision = 2; break;
                case 32 : pElement->nVDCIntegerPrecision = 4; break;
                default : mbStatus = false; break;
            }
        }
        break;
        case 0x02 : /*VDC Real Precision*/
        {
            nUInteger = ImplGetUI16();
            nI0 = ImplGetI( pElement->nIntegerPrecision );  // exponent
            nI1 = ImplGetI( pElement->nIntegerPrecision );  // mantisse
            switch( nUInteger )
            {
                case 0 :
                    pElement->eVDCRealPrecision = RP_FLOAT;
                    switch ( nI0 )
                    {
                        case 9 :
                            if ( nI1 != 23 )
                                mbStatus = false;
                            pElement->nVDCRealSize = 4;
                            break;
                        case 12 :
                            if ( nI1 != 52 )
                                mbStatus =false;
                            pElement->nVDCRealSize = 8;
                            break;
                        default:
                            mbStatus = false;
                            break;
                    }
                    break;
                case 1 :
                    pElement->eVDCRealPrecision = RP_FIXED;
                    if ( nI0 != nI1 )
                        mbStatus = false;
                    if ( nI0 == 16 )
                        pElement->nVDCRealSize = 4;
                    else if ( nI0 == 32 )
                        pElement->nVDCRealSize = 8;
                    else
                        mbStatus = false;
                    break;
                default :
                    mbStatus = false; break;
            }
        }
        break;
        case 0x03 : /*Auxiliary Colour*/
        {
            pElement->nAuxiliaryColor = ImplGetBitmapColor();
        }
        break;
        case 0x04 : /*Transparency*/
        {
            switch( ImplGetUI16() )
            {
                case 0 : pElement->eTransparency = T_OFF; break;
                case 1 : pElement->eTransparency = T_ON; break;
                default : mbStatus = false; break;
            }
        }
        break;
        case 0x05 : /*Clip Rectangle*/
            ImplGetRectangle( pElement->aClipRect );
        break;
        case 0x06 : /*Clip Indicator*/
        {
            switch( ImplGetUI16() )
            {
                case 0 : pElement->eClipIndicator = CI_OFF; break;
                case 1 : pElement->eClipIndicator = CI_ON; break;
                default : mbStatus = false; break;
            }
        }
        break;
        case 0x07 : /*Line Clipping Mode */break;               // NS
        case 0x08 : /*Marker Clipping Mode */break;             // NS
        case 0x09 : /*Edge Clipping Mode */break;               // NS
        case 0x0a : /*New Region*/
            mpOutAct->NewRegion();
        break;
        case 0x0b : /*Save Primitive Context */break;           // NS
        case 0x0c : /*Restore Primitive Context */break;        // NS
        case 0x11 : /*Protection Region Indicator */break;
        case 0x12 : /*Generalized Text Path Mode */break;       // NS
        case 0x13 : /*Mitre Limit*/
            pElement->nMitreLimit = ImplGetFloat( pElement->eRealPrecision, pElement->nRealSize );
        break;                                                                      // NS
        case 0x14 : /*Transparent Cell Color */break;           // NS
        case 0xfc : /*Text Path Alignment Modes */break;
        case 0xfd : /*Pop Transformation Stack */break;
        case 0xfe : /*Push Transformation Stack */break;
        case 0xff : /*Set Patch ID */break;
        default: break;
    }
};


/* vim:set shiftwidth=4 softtabstop=4 expandtab: */