dlangui/examples/example1/winmain.d

62 lines
1.9 KiB
D

module winmain;
import dlangui.platforms.common.platform;
import dlangui.graphics.images;
import dlangui.widgets.widget;
import dlangui.widgets.controls;
import dlangui.core.logger;
import dlangui.graphics.fonts;
import std.stdio;
ImageCache imageCache;
string resourceDir;
version(Windows) {
import win32.windows;
import dlangui.platforms.windows.winapp;
/// workaround for link issue when WinMain is located in library
extern (Windows)
int WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow)
{
return DLANGUIWinMain(hInstance, hPrevInstance,
lpCmdLine, nCmdShow);
}
}
extern (C) int UIAppMain(string[] args) {
imageCache = new ImageCache();
resourceDir = exePath() ~ "..\\res\\";
string[] imageDirs = [
resourceDir
];
drawableCache.resourcePaths = imageDirs;
Window window = Platform.instance().createWindow("My Window", null);
Widget myWidget = (new Button()).textColor(0x40FF4000);
myWidget.text = "Some strange text string. 1234567890";
myWidget.alignment = Align.Center;
window.mainWidget = myWidget;
window.show();
window.windowCaption = "New Window Caption";
Log.d("Before getFont");
FontRef font = FontManager.instance.getFont(32, 400, false, FontFamily.SansSerif, "Arial");
Log.d("After getFont");
assert(!font.isNull);
int[] widths;
dchar[] text = cast(dchar[])"Test string"d;
Log.d("Calling measureText");
int charsMeasured = font.measureText(text, widths, 1000);
assert(charsMeasured > 0);
int w = widths[charsMeasured - 1];
Log.d("Measured string: ", charsMeasured, " chars, width=", w);
Glyph * g = font.getCharGlyph('A');
Log.d("Char A glyph: ", g.blackBoxX, "x", g.blackBoxY);
return Platform.instance().enterMessageLoop();
}