#ifndef MOD_DWMES_HSP_
#define MOD_DWMES_HSP_
#include "user32.as"
#include "gdi32.as"
#include "kernel32.as"
#uselib "d2d1.dll"
#func global D2D1CreateFactory "D2D1CreateFactory" int,var,int,var
#func global D2D1InvertMatrix "D2D1InvertMatrix" var
#func global D2D1IsMatrixInvertible "D2D1IsMatrixInvertible" var
#func global D2D1MakeRotateMatrix "D2D1MakeRotateMatrix" int,int,int,var
#func global D2D1MakeSkewMatrix "D2D1MakeSkewMatrix" int,int,int,int,var
#uselib "dwrite.dll"
#func global DWriteCreateFactory "DWriteCreateFactory" int,var,var
#ifndef IID_ID2D1Factory
#define global IID_ID2D1Factory "{06152247-6F50-465A-9245-118BFD3B6007}"
#usecom global ID2D1Factory IID_ID2D1Factory "{}"
#comfunc global ID2D1Factory_ReloadSystemMetrics 3
#comfunc global ID2D1Factory_GetDesktopDpi 4 var,var
#comfunc global ID2D1Factory_CreateRectangleGeometry 5 var,var
#comfunc global ID2D1Factory_CreateRoundedRectangleGeometry 6 var,var
#comfunc global ID2D1Factory_CreateEllipseGeometry 7 var,var
#comfunc global ID2D1Factory_CreateGeometryGroup 8 int,var,int,var
#comfunc global ID2D1Factory_CreateTransformedGeometry 9 int,var,var
#comfunc global ID2D1Factory_CreatePathGeometry 10 var
#comfunc global ID2D1Factory_CreateStrokeStyle 11 var,var,int,var
#comfunc global ID2D1Factory_CreateDrawingStateBlock 12 int,int,var
#comfunc global ID2D1Factory_CreateWicBitmapRenderTarget 13 int,var,var
#comfunc global ID2D1Factory_CreateHwndRenderTarget 14 var,var,var
#comfunc global ID2D1Factory_CreateDxgiSurfaceRenderTarget 15 int,var,var
#comfunc global ID2D1Factory_CreateDCRenderTarget 16 var,var
#endif // IID_ID2D1Factory
#ifndef IID_ID2D1DCRenderTarget
#define global IID_ID2D1DCRenderTarget "{1c51bc64-de61-46fd-9899-63a5d8f03950}"
#usecom global ID2D1DCRenderTarget IID_ID2D1DCRenderTarget "{}"
#comfunc global ID2D1DCRenderTarget_GetFactory 3 var
#comfunc global ID2D1DCRenderTarget_CreateBitmap 4 int,int,int,int,int,var
#comfunc global ID2D1DCRenderTarget_CreateBitmapFromWicBitmap 5 int,int,var
#comfunc global ID2D1DCRenderTarget_CreateSharedBitmap 6 var,var,int,var
#comfunc global ID2D1DCRenderTarget_CreateBitmapBrush 7 int,int,int,var
#comfunc global ID2D1DCRenderTarget_CreateSolidColorBrush 8 var,int,var
#comfunc global ID2D1DCRenderTarget_CreateGradientStopCollection 9 var,int,int,int,var
#comfunc global ID2D1DCRenderTarget_CreateLinearGradientBrush 10 int,int,int,var
#comfunc global ID2D1DCRenderTarget_CreateRadialGradientBrush 11 int,int,int,var
#comfunc global ID2D1DCRenderTarget_CreateCompatibleRenderTarget 12 int,int,int,int,int,int,var
#comfunc global ID2D1DCRenderTarget_CreateLayer 13 int,int,var
#comfunc global ID2D1DCRenderTarget_CreateMesh 14 var
#comfunc global ID2D1DCRenderTarget_DrawLine 15 int,int,int,int,int,int,int
#comfunc global ID2D1DCRenderTarget_DrawRectangle 16 var,int,int,int
#comfunc global ID2D1DCRenderTarget_FillRectangle 17 var,var
#comfunc global ID2D1DCRenderTarget_DrawRoundedRectangle 18 var,int,int,int
#comfunc global ID2D1DCRenderTarget_FillRoundedRectangle 19 int,int
#comfunc global ID2D1DCRenderTarget_DrawEllipse 20 int,int,int,int,int,int,int
#comfunc global ID2D1DCRenderTarget_FillEllipse 21 var,int
#comfunc global ID2D1DCRenderTarget_DrawGeometry 22 int,int,int,int
#comfunc global ID2D1DCRenderTarget_FillGeometry 23 int,int,int
#comfunc global ID2D1DCRenderTarget_FillMesh 24 int,int
#comfunc global ID2D1DCRenderTarget_FillOpacityMask 25 int,int,int,int,int
#comfunc global ID2D1DCRenderTarget_DrawBitmap 26 int,int,int,int,int
#comfunc global ID2D1DCRenderTarget_DrawText 27 wstr,int,int,var,int,int,int
#comfunc global ID2D1DCRenderTarget_DrawTextLayout 28 int,int,int,int,int
#comfunc global ID2D1DCRenderTarget_DrawGlyphRun 29 int,int,int,int,int
#comfunc global ID2D1DCRenderTarget_SetTransform 30 var
#comfunc global ID2D1DCRenderTarget_GetTransform 31 var
#comfunc global ID2D1DCRenderTarget_SetAntialiasMode 32 int
#comfunc global ID2D1DCRenderTarget_GetAntialiasMode 33
#comfunc global ID2D1DCRenderTarget_SetTextAntialiasMode 34 int
#comfunc global ID2D1DCRenderTarget_GetTextAntialiasMode 35
#comfunc global ID2D1DCRenderTarget_SetTextRenderingParams 36 int
#comfunc global ID2D1DCRenderTarget_GetTextRenderingParams 37 var
#comfunc global ID2D1DCRenderTarget_SetTags 38 int,int,int,int
#comfunc global ID2D1DCRenderTarget_GetTags 39 int,int
#comfunc global ID2D1DCRenderTarget_PushLayer 40 var,int
#comfunc global ID2D1DCRenderTarget_PopLayer 41
#comfunc global ID2D1DCRenderTarget_Flush 42 int,int
#comfunc global ID2D1DCRenderTarget_SaveDrawingState 43 int
#comfunc global ID2D1DCRenderTarget_RestoreDrawingState 44 int
#comfunc global ID2D1DCRenderTarget_PushAxisAlignedClip 45 var,int
#comfunc global ID2D1DCRenderTarget_PopAxisAlignedClip 46
#comfunc global ID2D1DCRenderTarget_Clear 47 var
#comfunc global ID2D1DCRenderTarget_BeginDraw 48
#comfunc global ID2D1DCRenderTarget_EndDraw 49 int,int
#comfunc global ID2D1DCRenderTarget_GetPixelFormat 50
#comfunc global ID2D1DCRenderTarget_SetDpi 51 int,int
#comfunc global ID2D1DCRenderTarget_GetDpi 52 var,var
#comfunc global ID2D1DCRenderTarget_GetSize 53 var
#comfunc global ID2D1DCRenderTarget_GetPixelSize 54 var
#comfunc global ID2D1DCRenderTarget_GetMaximumBitmapSize 55
#comfunc global ID2D1DCRenderTarget_IsSupported 56 var
#comfunc global ID2D1DCRenderTarget_BindDC 57 int,var
#endif // IID_ID2D1DCRenderTarget
#ifndef IID_ID2D1SolidColorBrush
#define global IID_ID2D1SolidColorBrush "{2CD906A9-12E2-11DC-9FED-001143A055F9}"
#usecom global ID2D1SolidColorBrush IID_ID2D1SolidColorBrush "{}"
#comfunc global ID2D1SolidColorBrush_GetFactory 3 var
#comfunc global ID2D1SolidColorBrush_SetOpacity 4 int
#comfunc global ID2D1SolidColorBrush_SetTransform 5 var
#comfunc global ID2D1SolidColorBrush_GetOpacity 6
#comfunc global ID2D1SolidColorBrush_GetTransform 7 var
#comfunc global ID2D1SolidColorBrush_SetColor 8 var
#comfunc global ID2D1SolidColorBrush_GetColor 9 var
#endif // IID_ID2D1SolidColorBrush
#ifndef IID_IDWriteFactory
#define global IID_IDWriteFactory "{B859EE5A-D838-4B5B-A2E8-1ADC7D93DB48}"
#usecom global IDWriteFactory IID_IDWriteFactory "{}"
#comfunc global IDWriteFactory_GetSystemFontCollection 3 var,int
#comfunc global IDWriteFactory_CreateCustomFontCollection 4 int,var,int,var
#comfunc global IDWriteFactory_RegisterFontCollectionLoader 5 int
#comfunc global IDWriteFactory_UnregisterFontCollectionLoader 6 int
#comfunc global IDWriteFactory_CreateFontFileReference 7 wstr,int,var
#comfunc global IDWriteFactory_CreateCustomFontFileReference 8 int,int,int,var
#comfunc global IDWriteFactory_CreateFontFace 9 int,int,int,int,int,var
#comfunc global IDWriteFactory_CreateRenderingParams 10 var
#comfunc global IDWriteFactory_CreateMonitorRenderingParams 11 int,var
#comfunc global IDWriteFactory_CreateCustomRenderingParams 12 int,int,int,int,int,var
#comfunc global IDWriteFactory_RegisterFontFileLoader 13 int
#comfunc global IDWriteFactory_UnregisterFontFileLoader 14 int
#comfunc global IDWriteFactory_CreateTextFormat 15 wstr,int,int,int,int,int,wstr,var
#comfunc global IDWriteFactory_CreateTypography 16 var
#comfunc global IDWriteFactory_GetGdiInterop 17 var
#comfunc global IDWriteFactory_CreateTextLayout 18 wstr,int,int,int,int,var
#comfunc global IDWriteFactory_CreateGdiCompatibleTextLayout 19 wstr,int,int,int,int,int,int,int,var
#comfunc global IDWriteFactory_CreateEllipsisTrimmingSign 20 int,var
#comfunc global IDWriteFactory_CreateTextAnalyzer 21 var
#comfunc global IDWriteFactory_CreateNumberSubstitution 22 int,wstr,int,var
#comfunc global IDWriteFactory_CreateGlyphRunAnalysis 23 int,int,int,int,int,int,int,var
#endif // IID_IDWriteFactory
#ifndef IID_IDWriteTextFormat
#define global IID_IDWriteTextFormat "{9c906818-31d7-4fd3-a151-7c5e225db55a}"
#usecom global IDWriteTextFormat IID_IDWriteTextFormat "{}"
#comfunc global IDWriteTextFormat_SetTextAlignment 3 int
#comfunc global IDWriteTextFormat_SetParagraphAlignment 4 int
#comfunc global IDWriteTextFormat_SetWordWrapping 5 int
#comfunc global IDWriteTextFormat_SetReadingDirection 6 int
#comfunc global IDWriteTextFormat_SetFlowDirection 7 int
#comfunc global IDWriteTextFormat_SetIncrementalTabStop 8 int
#comfunc global IDWriteTextFormat_SetTrimming 9 var,int
#comfunc global IDWriteTextFormat_SetLineSpacing 10 int,int,int
#comfunc global IDWriteTextFormat_GetTextAlignment 11
#comfunc global IDWriteTextFormat_GetParagraphAlignment 12
#comfunc global IDWriteTextFormat_GetWordWrapping 13
#comfunc global IDWriteTextFormat_GetReadingDirection 14
#comfunc global IDWriteTextFormat_GetFlowDirection 15
#comfunc global IDWriteTextFormat_GetIncrementalTabStop 16
#comfunc global IDWriteTextFormat_GetTrimming 17 var,var
#comfunc global IDWriteTextFormat_GetLineSpacing 18 var,var,var
#comfunc global IDWriteTextFormat_GetFontCollection 19 var
#comfunc global IDWriteTextFormat_GetFontFamilyNameLength 20
#comfunc global IDWriteTextFormat_GetFontFamilyName 21 var,int
#comfunc global IDWriteTextFormat_GetFontWeight 22
#comfunc global IDWriteTextFormat_GetFontStyle 23
#comfunc global IDWriteTextFormat_GetFontStretch 24
#comfunc global IDWriteTextFormat_GetFontSize 25
#comfunc global IDWriteTextFormat_GetLocaleNameLength 26
#comfunc global IDWriteTextFormat_GetLocaleName 27 var,int
#endif // IID_IDWriteTextFormat
#ifndef IID_IDWriteTextLayout // inherits from IDWriteTextFormat
#define global IID_IDWriteTextLayout "{53737037-6d14-410b-9bfe-0b182bb70961}"
#usecom global IDWriteTextLayout IID_IDWriteTextLayout "{}"
#comfunc global IDWriteTextLayout_SetMaxWidth 28 int
#comfunc global IDWriteTextLayout_SetMaxHeight 29 int
#comfunc global IDWriteTextLayout_SetFontCollection 30 int,int,int
#comfunc global IDWriteTextLayout_SetFontFamilyName 31 wstr,int,int
#comfunc global IDWriteTextLayout_SetFontWeight 32 int,int,int
#comfunc global IDWriteTextLayout_SetFontStyle 33 int,int,int
#comfunc global IDWriteTextLayout_SetFontStretch 34 int,int,int
#comfunc global IDWriteTextLayout_SetFontSize 35 int,int,int
#comfunc global IDWriteTextLayout_SetUnderline 36 int,int,int
#comfunc global IDWriteTextLayout_SetStrikethrough 37 int,int,int
#comfunc global IDWriteTextLayout_SetDrawingEffect 38 int,int,int
#comfunc global IDWriteTextLayout_SetInlineObject 39 int,int,int
#comfunc global IDWriteTextLayout_SetTypography 40 int,int,int
#comfunc global IDWriteTextLayout_SetLocaleName 41 wstr,int,int
#comfunc global IDWriteTextLayout_GetMaxWidth 42
#comfunc global IDWriteTextLayout_GetMaxHeight 43
#comfunc global IDWriteTextLayout_GetFontCollection 44 int,var,int
#comfunc global IDWriteTextLayout_GetFontFamilyNameLength 45 int,var,int
#comfunc global IDWriteTextLayout_GetFontFamilyName 46 int,var,int,int
#comfunc global IDWriteTextLayout_GetFontWeight 47 int,var,int
#comfunc global IDWriteTextLayout_GetFontStyle 48 int,var,int
#comfunc global IDWriteTextLayout_GetFontStretch 49 int,var,int
#comfunc global IDWriteTextLayout_GetFontSize 50 int,var,int
#comfunc global IDWriteTextLayout_GetUnderline 51 int,var,int
#comfunc global IDWriteTextLayout_GetStrikethrough 52 int,var,int
#comfunc global IDWriteTextLayout_GetDrawingEffect 53 int,var,int
#comfunc global IDWriteTextLayout_GetInlineObject 54 int,var,int
#comfunc global IDWriteTextLayout_GetTypography 55 int,var,int
#comfunc global IDWriteTextLayout_GetLocaleNameLength 56 int,var,int
#comfunc global IDWriteTextLayout_GetLocaleName 57 int,var,int,int
#comfunc global IDWriteTextLayout_Draw 58 int,int,int,int
#comfunc global IDWriteTextLayout_GetLineMetrics 59 int,int,var
#comfunc global IDWriteTextLayout_GetMetrics 60 var
#comfunc global IDWriteTextLayout_GetOverhangMetrics 61 var
#comfunc global IDWriteTextLayout_GetClusterMetrics 62 var,int,var
#comfunc global IDWriteTextLayout_DetermineMinWidth 63 var
#comfunc global IDWriteTextLayout_HitTestPoint 64 int,int,var,var,var
#comfunc global IDWriteTextLayout_HitTestTextPosition 65 int,int,var,var,var
#comfunc global IDWriteTextLayout_HitTestTextRange 66 int,int,int,int,var,int,var
#endif // IID_IDWriteTextLayout
#ifndef IDWriteInlineObject
#define global IID_IDWriteInlineObject "{8339FDE3-106F-47ab-8373-1C6295EB10B3}"
#usecom global IDWriteInlineObject IID_IDWriteInlineObject "{}"
#comfunc global IDWriteInlineObject_Draw 3 int,int,int,int,int,int,int
#comfunc global IDWriteInlineObject_GetMetrics 4 var
#comfunc global IDWriteInlineObject_GetOverhangMetrics 5 var
#comfunc global IDWriteInlineObject_GetBreakConditions 6 var,var
#endif // IDWriteInlineObject
#ifndef d2f
#module mod_d2f
#defcfunc d2f double d
if( dtof == 0 ){
d_ = 0.0 : f_ = 0
dim prm, 2 : dim dtof,4
dtof(0) = 0x0424448b, 0x4c8b00dd, 0x19d90824, 0x000000c3
VirtualProtect varptr(dtof), 16, 0x40, varptr(r)
prm = varptr(d_), varptr(f_)
}
d_ = d
r = callfunc(prm, varptr(dtof), 2)
return f_
#global
#endif // d2f
#ifndef f2d
#module mod_f2d
#defcfunc f2d int f
if( ftod == 0 ){
d_ = 0.0 : f_ = 0
dim prm, 2 : dim ftod,4
ftod(0) = 0x0424448b, 0x4c8b00d9, 0x19dd0824, 0x000000c3
VirtualProtect varptr(ftod), 16, 0x40, varptr(r)
prm = varptr(f_), varptr(d_)
}
f_ = f
r = callfunc(prm, varptr(ftod), 2)
return d_
#global
#endif // f2d
#ifndef GetF2D
#module mod_GetF2D
#defcfunc GetF2D
if( getFtoD == 0 ){
prm = 0 : dim getFtoD, 3
getFtoD(0) = 0x241cd951, 0x5924048b, 0x000000c3
VirtualProtect varptr(getFtoD), 12, 0x40, varptr(r)
}
r = callfunc(prm, varptr(getFtoD), 0)
return f2d(r)
#global
#endif // GetF2D
#module mod_DWMes
#deffunc DWMes_Init
mref bmscr, 67
dim IID_ID2D1Factory_, 4
dim IID_IDWriteFactory_, 4
IID_ID2D1Factory_(0) = 0x6152247, 0x465a6f50, 0x8b114592, 0x7603bfd
D2D1CreateFactory 0, IID_ID2D1Factory_, 0, pv
if ( stat ){ return }
newcom factory, ID2D1Factory, -1, pv
IID_IDWriteFactory_(0) = 0xb859ee5a, 0x4b5bd838, 0xdc1ae8a2, 0x48db937d
DWriteCreateFactory 0, IID_IDWriteFactory_, pv
if ( stat ){ delcom factory : return }
newcom dwFactory, IID_IDWriteFactory, -1, pv
dim prm, 15 : prm(1) = 87, 3
ID2D1Factory_CreateDCRenderTarget factory, prm, pv
if ( stat ){ delcom factory : delcom dwFactory : return }
newcom dcRT, ID2D1DCRenderTarget, -1, pv
dim curDWInfo, 3
mref bmscr, 67
GetObjectA bmscr(38), 60, varptr(prm)
dupptr dp, varptr(prm) + 28, 32, 2
if ( prm < 0 ){ prm *= -1 }
DWMes2Make curDWInfo, hdc, dp, prm, 400, ginfo_r, ginfo_g, ginfo_b
return
#deffunc DWMes str s
GetClientRect hwnd, varptr(prm)
ID2D1DCRenderTarget_BindDC dcRT, hdc, prm
MultiByteToWideChar 0, 0, s, -1, 0, 0
if ( stat == 0 ){ return }
prm(4) = stat - 1, d2f(ginfo_cx), d2f(ginfo_cy), d2f(prm(2)), d2f(prm(3))
ID2D1DCRenderTarget_BeginDraw dcRT
ID2D1DCRenderTarget_DrawText dcRT, s, prm(4), curDWInfo(1), prm(5), curDWInfo(2), 0, 0
ID2D1DCRenderTarget_EndDraw dcRT, 0, 0
IDWriteFactory_CreateTextLayout dwFactory, s, prm(4), curDWInfo(1), prm(7), prm(8), pv
newcom objTmp, IDWriteTextLayout, -1, pv
IDWriteTextLayout_GetMetrics objTmp, prm
bmscr(28) += f2d(prm(4))
objTmp = 0
if ( wpeek(bmscr, 78) ){ redraw 1 }
return
#deffunc DWMesFont str fontName, int size, int weight
DWMes2Font curDWInfo, fontName, size, weight
return
#deffunc DWMesColor int r, int g, int b
DWMes2Color curDWInfo, r, g, b
return
#deffunc DWMesGetSize str s, int w, int h, array rc
DWMes2GetSize curDWInfo, s, w, h, rc
return
#deffunc DWMesOpacity int opacity
DWMes2Opacity curDWInfo, opacity
return
#defcfunc DWMesGetTextAlignment
return DWMes2GetTextAlignment(curDWInfo)
#deffunc DWMesSetTextAlignment int b
DWMes2SetTextAlignment curDWInfo, b
return
#defcfunc DWMesGetParagraphAlignment
return DWMes2GetParagraphAlignment(curDWInfo)
#deffunc DWMesSetParagraphAlignment int b
DWMes2SetParagraphAlignment curDWInfo, b
return
#defcfunc DWMesGetWordWrapping
return DWMes2GetWordWrapping(curDWInfo)
#deffunc DWMesSetWordWrapping int b
DWMes2SetWordWrapping curDWInfo, b
return
#defcfunc DWMesGetReadingDirection
return DWMes2GetReadingDirection(curDWInfo)
#deffunc DWMesSetReadingDirection int b
DWMes2SetReadingDirection curDWInfo, b
return
#defcfunc DWMesGetFlowDirection
return DWMes2GetFlowDirection(curDWInfo)
#deffunc DWMesSetFlowDirection int b
DWMes2SetFlowDirection curDWInfo, b
return
#defcfunc DWMesGetTabStop
return DWMes2GetTabStop(curDWInfo)
#deffunc DWMesSetTabStop int size
DWMes2SetTabStop curDWInfo, d2f(size)
return
#defcfunc DWMesGetTrimmingOption
return DWMes2GetTrimmingOption(curDWInfo)
#defcfunc DWMesGetTrimmingObj
return DWMes2GetTrimmingObj(curDWInfo)
#deffunc DWMesSetTrimming int option, int bObj
DWMes2SetTrimming curDWInfo, option, bObj
return
#defcfunc DWMesGetLineSpacingMethod
return DWMes2GetLineSpacingMethod(curDWInfo)
#defcfunc DWMesGetLineSpacingHeight
return DWMes2GetLineSpacingHeight(curDWInfo)
#defcfunc DWMesGetLineSpacingBase
return DWMes2GetLineSpacingBase(curDWInfo)
#deffunc DWMesSetLineSpacing int method, double h, double base
DWMes2SetLineSpacing curDWInfo, method, h, base
return
#deffunc DWMesClear int r, int g, int b
GetClientRect hwnd, varptr(prm)
ID2D1DCRenderTarget_BindDC dcRT, hdc, prm
ID2D1DCRenderTarget_BeginDraw dcRT
prm = d2f(1.0 * r / 255), d2f(1.0 * g / 255), d2f(1.0 * b / 255), d2f(1.0)
ID2D1DCRenderTarget_Clear dcRT, prm
ID2D1DCRenderTarget_EndDraw dcRT, 0, 0
mref bmscr, 67
if ( wpeek(bmscr, 78) ){ redraw 1 }
return
#deffunc DWMesTransform array p
ID2D1DCRenderTarget_SetTransform dcRT, p
return
#deffunc DWMesScale double sx, double sy, double x, double y
prm = d2f(sx), 0, 0, d2f(sy), d2f(x - x * sx), d2f(y - y * sy)
ID2D1DCRenderTarget_SetTransform dcRT, prm
return
#deffunc DWMesRotate double r, double x, double y
D2D1MakeRotateMatrix d2f(r), d2f(x), d2f(y), prm
ID2D1DCRenderTarget_SetTransform dcRT, prm
return
#deffunc DWMesSkew double rx, double ry, double x, double y
D2D1MakeSkewMatrix d2f(rx), d2f(ry), d2f(x), d2f(y), prm
ID2D1DCRenderTarget_SetTransform dcRT, prm
return
#deffunc DWMesHorizen
DWMes2Horizen curDWInfo
return
#deffunc DWMesVertical
DWMes2Vertical curDWInfo
return
#deffunc DWMes2Begin array dwInfo, int x, int y, int w, int h
prm = x, y, w, h
ID2D1DCRenderTarget_BindDC dcRT, dwInfo(0), prm
ID2D1DCRenderTarget_BeginDraw dcRT
return
#deffunc DWMes2End
ID2D1DCRenderTarget_EndDraw dcRT, 0, 0
return
#deffunc DWMes2 array dwInfo, str s, int x, int y, int w, int h
prm = d2f(x), d2f(y), d2f(w), d2f(h)
MultiByteToWideChar 0, 0, s, -1, 0, 0
ID2D1DCRenderTarget_DrawText dcRT, s, stat - 1, dwInfo(1), prm, dwInfo(2), 0, 0
return
#deffunc DWMes2Make array dwInfo, int hdc_, str fontName, int size, int weight, int r, int g, int b
dim dwInfo, 3
dwInfo = hdc_
DWMes2Font dwInfo, fontName, size, weight
DWMes2Color dwInfo, r, g, b
return
#deffunc DWMes2Free array dwInfo
newcom objTmp, IDWriteTextFormat, -1, dwInfo(1) : delcom objTmp
newcom objTmp, ID2D1SolidColorBrush, -1, dwInfo(2) : delcom objTmp
repeat 3 : dwInfo(cnt) = 0 : loop
objTmp = 0
return
#deffunc DWMes2Font array dwInfo, str fontName, int size, int weight
if ( dwInfo(1) ){
if ( dwInfo(1) == curDWInfo(1) ){
delcom curTextFormat
}
else {
newcom objTmp, IDWriteTextFormat, -1, dwInfo(1)
delcom objTmp
}
dwInfo(1) = 0
}
prm = weight, size
if ( prm == 0 ){ prm = 400 }
if ( size < 0 ){ prm(1) *= -1 }
IDWriteFactory_CreateTextFormat dwFactory, fontName, 0, prm, 0, 5, d2f(prm(1)), "", dwInfo(1)
if ( stat ){ return }
if ( dwInfo(1) == curDWInfo(1) ){
newcom curTextFormat, IDWriteTextFormat, -1, dwInfo(1)
DWMesSetWordWrapping 1
}
else {
DWMes2SetWordWrapping dwInfo, 1
}
return
#deffunc DWMes2Color array dwInfo, int r, int g, int b
prm = d2f(1.0 * r / 255), d2f(1.0 * g / 255), d2f(1.0 * b / 255), d2f(1.0)
if ( dwInfo(2) == 0 ){
ID2D1DCRenderTarget_CreateSolidColorBrush dcRT, prm, 0, dwInfo(2)
if ( dwInfo(2) == curDWInfo(2) ){
newcom curBrush, ID2D1SolidColorBrush, -1, dwInfo(2)
}
}
else {
if ( dwInfo(2) == curDWInfo(2) ){
ID2D1SolidColorBrush_SetColor curBrush, prm
}
else {
newcom objTmp, ID2D1SolidColorBrush, -2, dwInfo(2)
ID2D1SolidColorBrush_SetColor objTmp, prm
}
}
return
#deffunc DWMes2GetSize array dwInfo, str s, int w, int h, array rc
MultiByteToWideChar 0, 0, s, -1, 0, 0
if ( stat == 0 ){ return }
IDWriteFactory_CreateTextLayout dwFactory, s, stat - 1, dwInfo(1), d2f(w), d2f(h), pv
newcom objTmp, IDWriteTextLayout, -1, pv
IDWriteTextLayout_GetMetrics objTmp, prm
dim rc, 4
rc = int(f2d(prm(0))), int(f2d(prm(1))), int(f2d(prm(2))), int(f2d(prm(4)))
rc(2) += rc(0) : rc(3) += rc(1)
objTmp = 0
return
#deffunc DWMes2Opacity array dwInfo, int opacity
newcom objTmp, ID2D1SolidColorBrush, -2, dwInfo(2)
ID2D1SolidColorBrush_SetOpacity objTmp, d2f(1.0 * opacity / 100)
return
#defcfunc DWMes2GetTextAlignment array dwInfo
newcom objTmp, IDWriteTextFormat, -2, dwInfo(1)
IDWriteTextFormat_GetTextAlignment objTmp
return stat
#deffunc DWMes2SetTextAlignment array dwInfo, int b
newcom objTmp, IDWriteTextFormat, -2, dwInfo(1)
IDWriteTextFormat_SetTextAlignment objTmp, b
return
#defcfunc DWMes2GetParagraphAlignment array dwInfo
newcom objTmp, IDWriteTextFormat, -2, dwInfo(1)
IDWriteTextFormat_GetParagraphAlignment objTmp
return stat
#deffunc DWMes2SetParagraphAlignment array dwInfo, int b
newcom objTmp, IDWriteTextFormat, -2, dwInfo(1)
IDWriteTextFormat_SetParagraphAlignment objTmp, b
return
#defcfunc DWMes2GetWordWrapping array dwInfo
newcom objTmp, IDWriteTextFormat, -2, dwInfo(1)
IDWriteTextFormat_GetWordWrapping objTmp
return stat
#deffunc DWMes2SetWordWrapping array dwInfo, int b
newcom objTmp, IDWriteTextFormat, -2, dwInfo(1)
IDWriteTextFormat_SetWordWrapping objTmp, b
return
#defcfunc DWMes2GetReadingDirection array dwInfo
newcom objTmp, IDWriteTextFormat, -2, dwInfo(1)
IDWriteTextFormat_SetReadingDirection objTmp
return stat
#deffunc DWMes2SetReadingDirection array dwInfo, int b
newcom objTmp, IDWriteTextFormat, -2, dwInfo(1)
IDWriteTextFormat_SetReadingDirection objTmp, b
return
#defcfunc DWMes2GetFlowDirection array dwInfo
newcom objTmp, IDWriteTextFormat, -2, dwInfo(1)
IDWriteTextFormat_GetFlowDirection objTmp
return stat
#deffunc DWMes2SetFlowDirection array dwInfo, int b
newcom objTmp, IDWriteTextFormat, -2, dwInfo(1)
IDWriteTextFormat_SetFlowDirection objTmp, b
return
#defcfunc DWMes2GetTabStop array dwInfo
newcom objTmp, IDWriteTextFormat, -2, dwInfo(1)
IDWriteTextFormat_GetIncrementalTabStop objTmp
return GetF2D()
#deffunc DWMes2SetTabStop array dwInfo, int size
newcom objTmp, IDWriteTextFormat, -2, dwInfo(1)
IDWriteTextFormat_SetIncrementalTabStop objTmp, d2f(size)
return
#defcfunc DWMes2GetTrimmingOption array dwInfo
newcom objTmp, IDWriteTextFormat, -2, dwInfo(1)
IDWriteTextFormat_GetTrimming objTmp, prm, 0
return prm
#defcfunc DWMes2GetTrimmingObj array dwInfo
newcom objTmp, IDWriteTextFormat, -2, dwInfo(1)
IDWriteTextFormat_GetTrimming objTmp, prm, prm(1)
return prm(1)
#deffunc DWMes2SetTrimming array dwInfo, int option, int bObj
newcom objTmp, IDWriteTextFormat, -2, dwInfo(1)
if ( bObj == 0 ){
pv = 0
}
else {
IDWriteFactory_CreateEllipsisTrimmingSign dwFactory, curDWInfo(1), pv
newcom objTmp2, IDWriteInlineObject, -1, pv
}
prm = option
IDWriteTextFormat_SetTrimming objTmp, prm, pv
if ( bObj ){ delcom objTmp2 }
objTmp = 0
return
#defcfunc DWMes2GetLineSpacingMethod array dwInfo
newcom objTmp, IDWriteTextFormat, -2, dwInfo(1)
IDWriteTextFormat_GetLineSpacing objTmp, prm(0), prm(1), prm(2)
return prm
#defcfunc DWMes2GetLineSpacingHeight array dwInfo
newcom objTmp, IDWriteTextFormat, -2, dwInfo(1)
IDWriteTextFormat_GetLineSpacing objTmp, prm(0), prm(1), prm(2)
return f2d(prm(1))
#defcfunc DWMes2GetLineSpacingBase array dwInfo
newcom objTmp, IDWriteTextFormat, -2, dwInfo(1)
IDWriteTextFormat_GetLineSpacing objTmp, prm(0), prm(1), prm(2)
return f2d(prm(2))
#deffunc DWMes2SetLineSpacing array dwInfo, int method, double h, double base
newcom objTmp, IDWriteTextFormat, -2, dwInfo(1)
IDWriteTextFormat_SetLineSpacing objTmp, method, d2f(h), d2f(base)
return
#deffunc DWMes2Clear array dwInfo, int r, int g, int b
prm = d2f(1.0 * r / 255), d2f(1.0 * g / 255), d2f(1.0 * b / 255), d2f(1.0)
ID2D1DCRenderTarget_Clear dcRT, prm
return
#deffunc DWMes2Horizen array dwInfo
DWMes2SetTextAlignment dwInfo, 0
DWMes2SetParagraphAlignment dwInfo, 0
DWMes2SetReadingDirection dwInfo, 0
DWMes2SetFlowDirection dwInfo, 0
DWMes2SetWordWrapping dwInfo, 0
return
#deffunc DWMes2Vertical array dwInfo
DWMes2SetTextAlignment dwInfo, 0
DWMes2SetParagraphAlignment dwInfo, 0
DWMes2SetReadingDirection dwInfo, 2
DWMes2SetFlowDirection dwInfo, 3
DWMes2SetWordWrapping dwInfo, 0
return
#global
DWMes_Init
#endif // MOD_DWMES_HSP_