YSTest
PreAlpha_b400_20130424
The YSLib Test Project
首页
相关页面
模块
命名空间
类
文件
文件列表
文件成员
全部
类
命名空间
文件
函数
变量
类型定义
枚举
枚举值
友元
宏定义
组
页
ygdi.h
浏览该文件的文档.
1
/*
2
Copyright by FrankHB 2009 - 2013.
3
4
This file is part of the YSLib project, and may only be used,
5
modified, and distributed under the terms of the YSLib project
6
license, LICENSE.TXT. By continuing to use, modify, or distribute
7
this file you indicate that you have read the license and
8
understand and accept it fully.
9
*/
10
28
#ifndef YSL_INC_Service_ygdi_h_
29
#define YSL_INC_Service_ygdi_h_ 1
30
31
#include "../Core/ygdibase.h"
32
33
YSL_BEGIN
34
35
YSL_BEGIN_NAMESPACE
(Drawing)
36
37
// GDI 逻辑对象。
38
39
43
struct
YF_API
Padding
44
{
45
/*
46
\brief 空白距离:左、右、上、下。
47
\since build 365
48
*/
49
SPos
Left
,
Right
,
Top
, Bottom;
50
55
yconstfn
56
Padding()
57
: Padding(0, 0, 0, 0)
58
{}
63
yconstfn
64
Padding(
SPos
l,
SPos
r,
SPos
t,
SPos
b)
65
: Left(l), Right(r), Top(t), Bottom(b)
66
{}
67
71
Padding&
72
operator+=(
const
Padding& m)
73
{
74
yunseq
(Left += m.
Left
, Right += m.
Right
, Top += m.
Top
,
75
Bottom += m.
Bottom
);
76
return
*
this
;
77
}
78
};
79
83
yconstfn
Padding
84
operator+
(
const
Padding
& x,
const
Padding
& y)
85
{
86
return
Padding
(x.
Left
+ y.
Left
, x.
Right
+ y.
Right
, x.
Top
+ y.
Top
,
87
x.
Bottom
+ y.
Bottom
);
88
}
93
YF_API
Rect
94
operator+
(
const
Rect&,
const
Padding&);
95
96
100
inline
SDst
101
GetHorizontalOf
(
const
Padding
& m)
102
{
103
return
max<SPos>(0, m.
Left
) + max<SPos>(0, m.
Right
);
104
}
105
109
inline
SDst
110
GetVerticalOf
(
const
Padding
& m)
111
{
112
return
max<SPos>(0, m.
Top
) + max<SPos>(0, m.
Bottom
);
113
}
114
115
119
YF_API
Padding
120
FetchMargin
(
const
Rect&,
const
Size&);
121
122
127
inline
bool
128
Clip
(
Rect
& x,
const
Rect
& y)
129
{
130
x &= y;
131
return
!x.
IsUnstrictlyEmpty
();
132
}
133
142
YF_API
Point
143
ClipBounds
(Rect&,
const
Rect&);
144
153
YF_API
Point
154
ClipMargin
(PaintContext&,
const
Padding&,
const
Size&);
155
156
162
class
YF_API
BitmapBuffer
:
protected
Graphics
163
{
164
public
:
169
DefDeCtor
(
BitmapBuffer
)
173
BitmapBuffer
(
ConstBitmapPtr
,
SDst
,
SDst
);
174
BitmapBuffer
(
const
BitmapBuffer
&);
179
BitmapBuffer
(
BitmapBuffer
&&)
ynothrow
;
183
virtual
184
~
BitmapBuffer
()
185
{
186
ydelete_array
(pBuffer);
187
}
188
189
/*
190
\brief 复制赋值:使用复制构造函数和交换函数。
191
\since build 296
192
*/
193
BitmapBuffer
&
194
operator=(
const
BitmapBuffer
& buf)
195
{
196
BitmapBuffer
(buf).
Swap
(*
this
);
197
return
*
this
;
198
}
199
/*
200
\brief 转移赋值:使用转移构造函数和交换函数。
201
\since build 296
202
*/
203
BitmapBuffer
&
204
operator=(
BitmapBuffer
&& buf)
ynothrow
205
{
206
Swap(buf);
207
return
*
this
;
208
}
209
211
212
using
Graphics::operator!;
213
214
using
Graphics::operator bool;
216
218
219
using
Graphics::GetBufferPtr
;
220
using
Graphics::GetHeight
;
221
using
Graphics::GetWidth
;
222
using
Graphics::GetSize
;
223
using
Graphics::GetSizeOfBuffer
;
224
DefGetter
(
const
ynothrow
,
const
Graphics
&, Context, *
this
)
226
232
void
233
SetContent(
ConstBitmapPtr
,
SDst
, SDst);
239
virtual
void
240
SetSize(SDst, SDst);
244
void
245
SetSizeSwap();
246
250
virtual
void
251
ClearImage
() const;
252
253
virtual
DefClone
(const,
BitmapBuffer
, Clone)
254
255
/*
256
\brief 交换。
257
\since build 296
258
*/
259
void
260
Swap(BitmapBuffer& buf)
ynothrow
261
{
262
std::swap<Graphics>(*
this
, buf);
263
}
264
};
265
266
272
class
YF_API
BitmapBufferEx
:
public
BitmapBuffer
273
{
274
protected
:
275
u8
*
pBufferAlpha
;
276
277
public
:
282
BitmapBufferEx
()
283
:
BitmapBuffer
(), pBufferAlpha()
284
{}
288
BitmapBufferEx
(
ConstBitmapPtr
,
SDst
,
SDst
);
289
BitmapBufferEx
(
const
BitmapBufferEx
&);
294
BitmapBufferEx
(
BitmapBufferEx
&&)
ynothrow
;
298
~
BitmapBufferEx
()
override
299
{
300
ydelete_array
(pBufferAlpha);
301
}
302
303
/*
304
\brief 复制赋值:使用复制构造函数和交换函数。
305
\since build 296
306
*/
307
BitmapBufferEx
&
308
operator=
(
const
BitmapBufferEx
& buf)
309
{
310
BitmapBufferEx
(buf).
Swap
(*
this
);
311
return
*
this
;
312
}
313
/*
314
\brief 转移赋值:使用转移构造函数和交换函数。
315
\since build 296
316
*/
317
BitmapBufferEx
&
318
operator=
(
BitmapBufferEx
&& buf)
ynothrow
319
{
320
Swap
(buf);
321
return
*
this
;
322
}
323
324
DefGetter
(
const
ynothrow
,
u8
*, BufferAlphaPtr, pBufferAlpha) \
326
DefGetter
(
const
ynothrow
,
size_t
, SizeOfBufferAlpha,
sizeof
(
u8
)
327
*
GetAreaOf
(
GetSize
()))
328
334
void
335
SetSize(
SDst
, SDst) override;
336
340
void
341
ClearImage
() const override;
342
343
DefClone
(const override,
BitmapBufferEx
, Clone)
344
345
/*
346
\brief 交换。
347
\since build 296
348
*/
349
void
350
Swap(BitmapBufferEx& buf)
ynothrow
351
{
352
std::swap<BitmapBuffer>(*
this
, buf),
353
std::swap
(pBufferAlpha, buf.pBufferAlpha);
354
}
355
};
356
357
365
YF_API
bool
366
CopyTo
(
BitmapPtr
,
const
Graphics&,
const
Size&,
const
Point
&,
const
Point
&,
367
const
Size&,
Rotation
=
RDeg0
);
374
YF_API
bool
375
CopyTo
(
BitmapPtr
,
const
BitmapBufferEx&,
const
Size&,
376
const
Point
&,
const
Point
&,
const
Size&,
Rotation
=
RDeg0
);
385
inline
bool
386
CopyTo
(
const
Graphics
& dst,
const
Graphics
& src,
387
const
Point
& dp = {},
const
Point
& sp = {},
Rotation
rot =
RDeg0
)
388
{
389
return
CopyTo
(dst.
GetBufferPtr
(), src, dst.
GetSize
(),
390
dp, sp, src.
GetSize
(), rot);
391
}
399
inline
bool
400
CopyTo
(
const
Graphics
& dst,
const
BitmapBufferEx
& src,
401
const
Point
& dp = {},
const
Point
& sp = {},
Rotation
rot =
RDeg0
)
402
{
403
return
CopyTo
(dst.
GetBufferPtr
(), src, dst.
GetSize
(),
404
dp, sp, src.
GetSize
(), rot);
405
}
406
413
YF_API
bool
414
BlitTo
(
BitmapPtr
,
const
BitmapBufferEx&,
const
Size&,
415
const
Point
&,
const
Point
&,
const
Size&,
Rotation
=
RDeg0
);
423
inline
bool
424
BlitTo
(
const
Graphics
& dst,
const
BitmapBufferEx
& src,
425
const
Point
& dp = {},
const
Point
& sp = {},
Rotation
rot =
RDeg0
)
426
{
427
return
BlitTo
(dst.
GetBufferPtr
(), src, dst.
GetSize
(),
428
dp, sp, src.
GetSize
(), rot);
429
}
430
431
YSL_END_NAMESPACE
(Drawing)
432
433
YSL_END
434
435
#endif
436
YFramework
include
YSLib
Service
ygdi.h
生成于 2013年 四月 24日 星期三 18:41:28 , 为 YSTest使用
1.8.2