28 #ifndef YSL_INC_Service_ygdi_h_
29 #define YSL_INC_Service_ygdi_h_ 1
32 #include YFM_YSLib_Core_YGDIBase
109 return max<SPos>(0, m.
Left) + max<SPos>(0, m.
Right);
118 return max<SPos>(0, m.
Top) + max<SPos>(0, m.
Bottom);
137 return !x.IsUnstrictlyEmpty();
176 using Graphics::operator!;
178 using Graphics::operator bool;
180 using Graphics::GetBufferPtr;
181 using Graphics::GetHeight;
182 using Graphics::GetWidth;
183 using Graphics::GetSize;
222 CompactPixmap(CompactPixmap&&) ynothrow;
226 ~CompactPixmap()
override
236 ImplRet(msg.swap(*
this), *
this)
304 : CompactPixmap(), pBufferAlpha()
320 delete[] pBufferAlpha;
363 SetSize(const
Size&) override;
379 std::swap<CompactPixmap>(*
this, buf),
380 std::swap(pBufferAlpha, buf.pBufferAlpha);
410 const Point&, const Point&, const Size&,
Rotation = RDeg0);
420 CopyTo(const Graphics& dst, const Graphics& src,
423 return CopyTo(dst.GetBufferPtr(), src, dst.GetSize(),
424 dp, sp, src.GetSize(), rot);
437 return CopyTo(dst.GetBufferPtr(), src, dst.GetSize(),
438 dp, sp, src.GetSize(), rot);
462 return BlitTo(dst.GetBufferPtr(), src, dst.GetSize(),
463 dp, sp, src.GetSize(), rot);
bool Clip(Rect &x, const Rect &y)
剪切操作:取标准矩形交集并判断是否严格非空。
yconstfn Padding(SPos l, SPos r, SPos t, SPos b)
构造:使用 4 个边距。
YF_API Padding FetchMargin(const Rect &, const Size &)
取内边界相对于外边界的边距。
DefDeCtor(BasicImage) BasicImage(const Graphics &g)
SDst GetVerticalOf(const Padding &m)
取竖直边距和。
yconstfn Padding operator+(const Padding &x, const Padding &y)
加法:对应分量调用 operator+ 。
CompactPixmapEx()
使用 8 位 Alpha 扩展的标准矩形像素图缓冲区。
YF_API void ClearImage(const Graphics &)
清除图形接口上下文缓冲区。
SDst GetHorizontalOf(const Padding &m)
取水平边距和。
yconstfn auto GetAreaOf(const Size &s) ynothrow-> decltype(s.Width *s.Height)
取面积。
YF_API Point ClipBounds(Rect &, const Rect &)
根据指定源的边界优化绘制上下文的剪切区域。
yconstfn Padding()
默认构造:使用零边距。
std::uint16_t SDst
屏幕坐标距离。
Padding & operator+=(const Padding &m)
加法赋值:对应分量调用 operator+= 。
CompactPixmapEx & operator=(const CompactPixmapEx &buf)
CompactPixmapEx(ConstBitmapPtr, SDst, SDst)
构造:使用指定位图指针和大小。
void swap(any &x, any &y)
交换对象。
sizeof(AlphaType)*GetAreaOf(GetSize())) using CompactPixmap void SetSize(const Size &) override
重新设置缓冲区大小。
GBinaryGroup< SPos > Point
屏幕二维点(直角坐标表示)。
#define yunseq
无序列依赖表达式组求值。
#define ynothrow
YSLib 无异常抛出保证:若支持 noexcept 关键字, 指定特定的 noexcept 异常规范。
DefClone(const override, CompactPixmapEx) void swap(CompactPixmapEx &buf) ynothrow
#define DefSetter(_t, _n, _m)
yconstfn GBinaryGroup< _type > operator+(const GBinaryGroup< _type > &a, const GBinaryGroup< _type > &b) ynothrow
加法:屏幕二元组。
#define yconstfn
指定编译时常量函数。
YF_API Point ClipMargin(PaintContext &, const Padding &, const Size &)
根据指定边距和源的大小优化绘制上下文的剪切区域。
YF_API bool CopyTo(BitmapPtr, const CompactPixmapEx &, const Size &, const Point &, const Point &, const Size &, Rotation=RDeg0)
位图缓冲区向指针指定的缓冲区复制。
PDefH(void, DrawLineSeg, const Graphics &g, const Rect &bounds, const Point &p1, const Point &p2, Color c) ImplExpr(DrawLineSeg(g
DefGetter(const ynothrow, AlphaType *, BufferAlphaPtr, pBufferAlpha) DefGetter(const ynothrow
取 Alpha 缓冲区的指针。
const PixelType * ConstBitmapPtr
YF_API bool BlitTo(BitmapPtr, const CompactPixmapEx &, const Size &, const Point &, const Point &, const Size &, Rotation=RDeg0)
贴图:位图缓冲区向指针指定的缓冲区以贴图算法复制。