xref: /aoo41x/main/dtrans/source/win32/dtobj/Fetc.cxx (revision 48123e16)
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_dtrans.hxx"
26 
27 //------------------------------------------------------------------------
28 // includes
29 //------------------------------------------------------------------------
30 #include <osl/diagnose.h>
31 #include "Fetc.hxx"
32 #include "..\misc\ImplHelper.hxx"
33 
34 //------------------------------------------------------------------------
35 //
36 //------------------------------------------------------------------------
37 
CFormatEtc()38 CFormatEtc::CFormatEtc(  )
39 {
40 	m_FormatEtc.cfFormat = 0;
41 	m_FormatEtc.ptd      = NULL;
42 	m_FormatEtc.dwAspect = 0;
43 	m_FormatEtc.lindex   = -1;
44 	m_FormatEtc.tymed    = TYMED_NULL;
45 }
46 
47 //------------------------------------------------------------------------
48 // transfer of ownership
49 //------------------------------------------------------------------------
50 
CFormatEtc(const FORMATETC & aFormatEtc)51 CFormatEtc::CFormatEtc( const FORMATETC& aFormatEtc )
52 {
53 	CopyFormatEtc( &m_FormatEtc, &const_cast< FORMATETC& >( aFormatEtc ) );
54 }
55 
56 //------------------------------------------------------------------------
57 //
58 //------------------------------------------------------------------------
59 
~CFormatEtc()60 CFormatEtc::~CFormatEtc( )
61 {
62 	DeleteTargetDevice( m_FormatEtc.ptd );
63 }
64 
65 //------------------------------------------------------------------------
66 //
67 //------------------------------------------------------------------------
68 
CFormatEtc(CLIPFORMAT cf,DWORD tymed,DVTARGETDEVICE * ptd,DWORD dwAspect,LONG lindex)69 CFormatEtc::CFormatEtc( CLIPFORMAT cf, DWORD tymed, DVTARGETDEVICE* ptd, DWORD dwAspect, LONG lindex )
70 {
71 	m_FormatEtc.cfFormat = cf;
72 	m_FormatEtc.ptd      = CopyTargetDevice( ptd );
73 	m_FormatEtc.dwAspect = dwAspect;
74 	m_FormatEtc.lindex   = lindex;
75 	m_FormatEtc.tymed    = tymed;
76 }
77 
78 //------------------------------------------------------------------------
79 //
80 //------------------------------------------------------------------------
81 
CFormatEtc(const CFormatEtc & theOther)82 CFormatEtc::CFormatEtc( const CFormatEtc& theOther )
83 {
84 	m_FormatEtc.cfFormat = theOther.m_FormatEtc.cfFormat;
85 	m_FormatEtc.ptd      = CopyTargetDevice( theOther.m_FormatEtc.ptd );
86 	m_FormatEtc.dwAspect = theOther.m_FormatEtc.dwAspect;
87 	m_FormatEtc.lindex   = theOther.m_FormatEtc.lindex;
88 	m_FormatEtc.tymed    = theOther.m_FormatEtc.tymed;
89 }
90 
91 //------------------------------------------------------------------------
92 //
93 //------------------------------------------------------------------------
94 
operator =(const CFormatEtc & theOther)95 CFormatEtc& CFormatEtc::operator=( const CFormatEtc& theOther )
96 {
97 	if ( this != &theOther )
98 	{
99 		DeleteTargetDevice( m_FormatEtc.ptd );
100 
101 		m_FormatEtc.cfFormat = theOther.m_FormatEtc.cfFormat;
102 		m_FormatEtc.ptd      = CopyTargetDevice( theOther.m_FormatEtc.ptd );
103 		m_FormatEtc.dwAspect = theOther.m_FormatEtc.dwAspect;
104 		m_FormatEtc.lindex   = theOther.m_FormatEtc.lindex;
105 		m_FormatEtc.tymed    = theOther.m_FormatEtc.tymed;
106 	}
107 
108 	return *this;
109 }
110 
111 //------------------------------------------------------------------------
112 //
113 //------------------------------------------------------------------------
114 
operator FORMATETC*()115 CFormatEtc::operator FORMATETC*( )
116 {
117 	return &m_FormatEtc;
118 }
119 
120 //------------------------------------------------------------------------
121 //
122 //------------------------------------------------------------------------
123 
operator FORMATETC()124 CFormatEtc::operator FORMATETC( )
125 {
126 	return m_FormatEtc;
127 }
128 
129 //------------------------------------------------------------------------
130 //
131 //------------------------------------------------------------------------
132 
getFORMATETC(LPFORMATETC lpFormatEtc)133 void CFormatEtc::getFORMATETC( LPFORMATETC lpFormatEtc )
134 {
135 	OSL_ASSERT( lpFormatEtc );
136 	OSL_ASSERT( !IsBadWritePtr( lpFormatEtc, sizeof( FORMATETC ) ) );
137 
138 	CopyFormatEtc( lpFormatEtc, &m_FormatEtc );
139 }
140 
141 //------------------------------------------------------------------------
142 //
143 //------------------------------------------------------------------------
144 
getClipformat() const145 CLIPFORMAT CFormatEtc::getClipformat( ) const
146 {
147 	return m_FormatEtc.cfFormat;
148 }
149 
150 //------------------------------------------------------------------------
151 //
152 //------------------------------------------------------------------------
153 
getTymed() const154 DWORD CFormatEtc::getTymed( ) const
155 {
156 	return m_FormatEtc.tymed;
157 }
158 
159 //------------------------------------------------------------------------
160 //
161 //------------------------------------------------------------------------
162 
getTargetDevice(DVTARGETDEVICE ** lpDvTargetDevice) const163 void CFormatEtc::getTargetDevice( DVTARGETDEVICE** lpDvTargetDevice ) const
164 {
165 	OSL_ASSERT( lpDvTargetDevice );
166 	OSL_ASSERT( !IsBadWritePtr( lpDvTargetDevice, sizeof( DVTARGETDEVICE ) ) );
167 
168 	*lpDvTargetDevice = NULL;
169 
170 	if ( m_FormatEtc.ptd )
171 		*lpDvTargetDevice = CopyTargetDevice( m_FormatEtc.ptd );
172 }
173 
174 //------------------------------------------------------------------------
175 //
176 //------------------------------------------------------------------------
177 
getDvAspect() const178 DWORD CFormatEtc::getDvAspect( ) const
179 {
180 	return m_FormatEtc.dwAspect;
181 }
182 
183 //------------------------------------------------------------------------
184 //
185 //------------------------------------------------------------------------
186 
getLindex() const187 LONG CFormatEtc::getLindex( ) const
188 {
189 	return m_FormatEtc.lindex;
190 }
191 
192 //------------------------------------------------------------------------
193 //
194 //------------------------------------------------------------------------
195 
setClipformat(CLIPFORMAT cf)196 void CFormatEtc::setClipformat( CLIPFORMAT cf )
197 {
198 	m_FormatEtc.cfFormat = cf;
199 }
200 
201 //------------------------------------------------------------------------
202 //
203 //------------------------------------------------------------------------
204 
setTymed(DWORD tymed)205 void CFormatEtc::setTymed( DWORD tymed )
206 {
207 	m_FormatEtc.tymed = tymed;
208 }
209 
210 //------------------------------------------------------------------------
211 // transfer of ownership!
212 //------------------------------------------------------------------------
213 
setTargetDevice(DVTARGETDEVICE * ptd)214 void CFormatEtc::setTargetDevice( DVTARGETDEVICE* ptd )
215 {
216 	DeleteTargetDevice( m_FormatEtc.ptd );
217 	m_FormatEtc.ptd = ptd;
218 }
219 
220 //------------------------------------------------------------------------
221 //
222 //------------------------------------------------------------------------
223 
setDvAspect(DWORD dwAspect)224 void CFormatEtc::setDvAspect( DWORD dwAspect )
225 {
226 	m_FormatEtc.dwAspect = dwAspect;
227 }
228 
229 //------------------------------------------------------------------------
230 //
231 //------------------------------------------------------------------------
232 
setLindex(LONG lindex)233 void CFormatEtc::setLindex( LONG lindex )
234 {
235 	m_FormatEtc.lindex = lindex;
236 }
237 
238 //------------------------------------------------------------------------
239 //
240 //------------------------------------------------------------------------
241 
operator ==(const CFormatEtc & lhs,const CFormatEtc & rhs)242 sal_Int32 operator==( const CFormatEtc& lhs, const CFormatEtc& rhs )
243 {
244 	return CompareFormatEtc( &lhs.m_FormatEtc, &rhs.m_FormatEtc );
245 }
246 
247 //------------------------------------------------------------------------
248 //
249 //------------------------------------------------------------------------
250 
operator !=(const CFormatEtc & lhs,const CFormatEtc & rhs)251 sal_Int32 operator!=( const CFormatEtc& lhs, const CFormatEtc& rhs )
252 {
253 	return ( ( lhs == rhs ) != 1 );
254 }
255 
256