~ubuntu-branches/ubuntu/wily/opencollada/wily-proposed

« back to all changes in this revision

Viewing changes to COLLADAStreamWriter/src/COLLADASWCameraOptic.cpp

  • Committer: Package Import Robot
  • Author(s): Matteo F. Vescovi
  • Date: 2015-05-14 17:23:27 UTC
  • Revision ID: package-import@ubuntu.com-20150514172327-f862u8envms01fra
Tags: upstream-0.1.0~20140703.ddf8f47+dfsg1
ImportĀ upstreamĀ versionĀ 0.1.0~20140703.ddf8f47+dfsg1

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
    Copyright (c) 2008-2009 NetAllied Systems GmbH
 
3
 
 
4
        This file is part of COLLADAStreamWriter.
 
5
        
 
6
    Licensed under the MIT Open Source License, 
 
7
    for details please see LICENSE file or the website
 
8
    http://www.opensource.org/licenses/mit-license.php
 
9
*/
 
10
 
 
11
#include "COLLADASWStreamWriter.h"
 
12
#include "COLLADASWCameraOptic.h"
 
13
#include "COLLADASWConstants.h"
 
14
 
 
15
namespace COLLADASW
 
16
{
 
17
 
 
18
    // ---------------------------------------------------
 
19
    BaseOptic::BaseOptic ( StreamWriter* streamWriter )
 
20
        : ElementWriter ( streamWriter )
 
21
        , BaseExtraTechnique ( )
 
22
        , mHasXFov ( false )
 
23
        , mHasYFov ( false )
 
24
        , mHasXMag ( false )
 
25
        , mHasYMag ( false )
 
26
        , mHasAspectRatio ( false )
 
27
        , mHasZNear ( false )
 
28
        , mHasZFar ( false )
 
29
        , mXMagSid ( "" )
 
30
        , mXFovSid ( "" )
 
31
        , mYFovSid ( "" )
 
32
        , mZNearSid ( "" )
 
33
        , mZFarSid ( "" )
 
34
    {}
 
35
 
 
36
    // ---------------------------------------------------
 
37
    void BaseOptic::add () const
 
38
    {
 
39
        mSW->openElement ( CSWC::CSW_ELEMENT_OPTICS );
 
40
        mSW->openElement ( CSWC::CSW_ELEMENT_TECHNIQUE_COMMON );
 
41
 
 
42
        addExtraTechniques ( mSW );
 
43
 
 
44
        this->addTypeSpecificInfos ();
 
45
 
 
46
        mSW->closeElement(); // COLLADASW_ELEMENT_TECHNIQUE_COMMON
 
47
        mSW->closeElement(); // COLLADASW_ELEMENT_OPTICS
 
48
    }
 
49
 
 
50
    // --------------------------------------------
 
51
    void BaseOptic::setZFar( const float val, const bool useDefaultSid /*= false*/, const String& sid/*="" */ )
 
52
    {
 
53
        mZFar = val;
 
54
        if ( useDefaultSid ) mZFarSid = CSWC::CSW_ELEMENT_ZFAR;
 
55
        else mZFarSid = sid; 
 
56
        mHasZFar = true;
 
57
    }
 
58
 
 
59
    // --------------------------------------------
 
60
    void BaseOptic::setZNear( const float val, const bool useDefaultSid /*= false*/, const String& sid/*="" */ )
 
61
    {
 
62
        mZNear = val; 
 
63
        if ( useDefaultSid ) mZNearSid = CSWC::CSW_ELEMENT_ZNEAR;
 
64
        else mZNearSid = sid; 
 
65
        mHasZNear = true;
 
66
    }
 
67
 
 
68
    // --------------------------------------------
 
69
    void BaseOptic::setAspectRatio( float val, const bool useDefaultSid /*= false*/, const String& sid/*="" */ )
 
70
    {
 
71
        mAspectRatio = val; 
 
72
        if ( useDefaultSid ) mAspectRatioSid = CSWC::CSW_ELEMENT_ASPECT_RATIO;
 
73
        else mAspectRatioSid = sid;
 
74
        mHasAspectRatio = true;
 
75
    }
 
76
 
 
77
    // --------------------------------------------
 
78
    void BaseOptic::setXFov( float val, const bool useDefaultSid /*= false*/, const String& sid/*="" */ )
 
79
    {
 
80
        mXFov = val; 
 
81
        if ( useDefaultSid ) mXFovSid = CSWC::CSW_ELEMENT_XFOV;
 
82
        else mXFovSid = sid; 
 
83
        mHasXFov = true;
 
84
    }
 
85
 
 
86
    // --------------------------------------------
 
87
    void BaseOptic::setYFov( float val, const bool useDefaultSid /*= false*/, const String& sid/*="" */ )
 
88
    {
 
89
        mYFov = val; 
 
90
        if ( useDefaultSid ) mYFovSid = CSWC::CSW_ELEMENT_YFOV;
 
91
        else mYFovSid = sid; 
 
92
        mHasYFov = true;
 
93
    }
 
94
 
 
95
    // --------------------------------------------
 
96
    void BaseOptic::setXMag( float val, bool useDefaultSid /*= false*/, const String& sid/*="" */ )
 
97
    {
 
98
        mXMag = val; 
 
99
        if ( useDefaultSid ) mXMagSid = CSWC::CSW_ELEMENT_XMAG;
 
100
        else mXMagSid = sid; 
 
101
        mHasXMag = true;
 
102
    }
 
103
 
 
104
    // --------------------------------------------
 
105
    void BaseOptic::setYMag( float val, const bool useDefaultSid /*= false*/, const String& sid/*="" */ )
 
106
    {
 
107
        mYMag = val; 
 
108
        if ( useDefaultSid ) mYMagSid = CSWC::CSW_ELEMENT_YMAG;
 
109
        else mYMagSid = sid;
 
110
        mHasYMag = true;
 
111
    }
 
112
 
 
113
    // --------------------------------------------
 
114
    void PerspectiveOptic::addTypeSpecificInfos() const
 
115
    {
 
116
        mSW->openElement ( CSWC::CSW_ELEMENT_CAMERA_PERSPECTIVE );
 
117
 
 
118
                COLLADABU_ASSERT ( !( !mHasXFov && !mHasYFov) );
 
119
        COLLADABU_ASSERT ( !( mHasAspectRatio && mHasXFov && mHasYFov) );
 
120
        COLLADABU_ASSERT ( mHasZNear );
 
121
        COLLADABU_ASSERT ( mHasZFar );
 
122
 
 
123
        if ( mHasXFov )
 
124
        {
 
125
            mSW->openElement ( CSWC::CSW_ELEMENT_XFOV );
 
126
            if ( !mXFovSid.empty() )
 
127
                mSW->appendAttribute( CSWC::CSW_ATTRIBUTE_SID, mXFovSid );
 
128
            mSW->appendValues ( mXFov );
 
129
            mSW->closeElement(); // COLLADASW_ELEMENT_XFOV
 
130
        }
 
131
 
 
132
        if ( mHasYFov )
 
133
        {
 
134
            mSW->openElement ( CSWC::CSW_ELEMENT_YFOV );
 
135
            if ( !mYFovSid.empty() )
 
136
                mSW->appendAttribute( CSWC::CSW_ATTRIBUTE_SID, mYFovSid );
 
137
            mSW->appendValues ( mYFov );
 
138
            mSW->closeElement(); // COLLADASW_ELEMENT_YFOV
 
139
        }
 
140
 
 
141
        if ( mHasAspectRatio )
 
142
        {
 
143
            mSW->openElement ( CSWC::CSW_ELEMENT_ASPECT_RATIO );
 
144
            mSW->appendValues ( mAspectRatio );
 
145
            mSW->closeElement(); // COLLADASW_ELEMENT_ASPECT_RATIO
 
146
        }
 
147
 
 
148
        mSW->openElement ( CSWC::CSW_ELEMENT_ZNEAR );
 
149
        if ( !mZNearSid.empty() )
 
150
            mSW->appendAttribute( CSWC::CSW_ATTRIBUTE_SID, mZNearSid );
 
151
        mSW->appendValues ( mZNear );
 
152
        mSW->closeElement(); // COLLADASW_ELEMENT_ZNEAR
 
153
 
 
154
        mSW->openElement ( CSWC::CSW_ELEMENT_ZFAR );
 
155
        if ( !mZFarSid.empty() )
 
156
            mSW->appendAttribute( CSWC::CSW_ATTRIBUTE_SID, mZFarSid );
 
157
        mSW->appendValues ( mZFar );
 
158
        mSW->closeElement(); // COLLADASW_ELEMENT_ZFAR
 
159
 
 
160
        mSW->closeElement(); // COLLADASW_ELEMENT_CAMERA_PERSPECTIVE
 
161
    }
 
162
 
 
163
    // --------------------------------------------
 
164
    void OrthographicOptic::addTypeSpecificInfos() const
 
165
    {
 
166
        mSW->openElement ( CSWC::CSW_ELEMENT_CAMERA_ORTHOGRAPHIC );
 
167
 
 
168
        COLLADABU_ASSERT ( !( !mHasXMag && !mHasYMag ) );
 
169
        COLLADABU_ASSERT ( !( mHasAspectRatio && mHasXMag && mHasYMag ) );
 
170
        COLLADABU_ASSERT ( mHasZNear );
 
171
        COLLADABU_ASSERT ( mHasZFar );
 
172
 
 
173
        if ( mHasXMag )
 
174
        {
 
175
            mSW->openElement ( CSWC::CSW_ELEMENT_XMAG );
 
176
            if ( !mXMagSid.empty() )
 
177
                mSW->appendAttribute( CSWC::CSW_ATTRIBUTE_SID, mXMagSid );
 
178
            mSW->appendValues ( mXMag );
 
179
            mSW->closeElement(); // COLLADASW_ELEMENT_XMAG
 
180
        }
 
181
 
 
182
        if ( mHasYMag )
 
183
        {
 
184
            mSW->openElement ( CSWC::CSW_ELEMENT_YMAG );
 
185
            mSW->appendValues ( mYMag );
 
186
            mSW->closeElement(); // COLLADASW_ELEMENT_YMAG
 
187
        }
 
188
 
 
189
        if ( mHasAspectRatio )
 
190
        {
 
191
            mSW->openElement ( CSWC::CSW_ELEMENT_ASPECT_RATIO );
 
192
            mSW->appendValues ( mAspectRatio );
 
193
            mSW->closeElement(); // COLLADASW_ELEMENT_ASPECT_RATIO
 
194
        }
 
195
 
 
196
        mSW->openElement ( CSWC::CSW_ELEMENT_ZNEAR );
 
197
        if ( !mZNearSid.empty() )
 
198
            mSW->appendAttribute( CSWC::CSW_ATTRIBUTE_SID, mZNearSid );
 
199
        mSW->appendValues ( mZNear );
 
200
        mSW->closeElement(); // COLLADASW_ELEMENT_ZNEAR
 
201
 
 
202
        mSW->openElement ( CSWC::CSW_ELEMENT_ZFAR );
 
203
        if ( !mZFarSid.empty() )
 
204
            mSW->appendAttribute( CSWC::CSW_ATTRIBUTE_SID, mZFarSid );
 
205
        mSW->appendValues ( mZFar );
 
206
        mSW->closeElement(); // COLLADASW_ELEMENT_ZFAR
 
207
 
 
208
        mSW->closeElement(); // COLLADASW_ELEMENT_CAMERA_ORTHOGRAPHIC
 
209
    }
 
210
 
 
211
 
 
212
} //namespace COLLADASW