i have something. rendering
All checks were successful
pyrite-dev/milsko/pipeline/head This commit looks good

This commit is contained in:
IoI_xD 2026-07-16 23:46:49 -07:00
commit 9f89ce2e00
4 changed files with 3326 additions and 5 deletions

View file

@ -13,8 +13,9 @@
#define WINBOOL int
#endif
#include "dwrite_c.h"
#include "dwrite_3_c.h"
/* dwrite is vendored because it's only mingw that gives us COBJMACRO */
#include "dwrite.h"
#include "dwrite_3.h"
static struct dw {
HMODULE d2d1_lib;
@ -195,11 +196,34 @@ fail:
}
static int dw_MwDrawText(MwWidget handle, MwFLFont ttf, MwPoint* point, const char* text, MwLLColor color) {
return 0;
IDWriteBitmapRenderTarget *target;
RECT rc;
HDC memoryHDC;
DWRITE_GLYPH_RUN glyphRun;
DWRITE_FONT_METRICS metrics;
LONG width, height;
IDWriteFontFace_GetMetrics(ttf->font_face, &metrics);
GetClientRect(handle->lowlevel->gdi.hWnd, &rc);
MapWindowPoints(handle->lowlevel->gdi.hWnd, GetParent(handle->lowlevel->gdi.hWnd), (LPPOINT)&rc, 2);
width = rc.right - rc.left;
height = MwTextHeight(handle, ttf, text);
IDWriteGdiInterop_CreateBitmapRenderTarget(ttf->gdiInterop, handle->lowlevel->gdi.hDC, width, height, &target);
memoryHDC = IDWriteBitmapRenderTarget_GetMemoryDC(target);
BitBlt(handle->lowlevel->gdi.hDC, point->x , point->y, width, height, memoryHDC, 0, 0, SRCCOPY | NOMIRRORBITMAP);
IDWriteBitmapRenderTarget_Release(target);
/*SelectObject(handle->lowlevel->gdi.hDC, &ttf->logfont);
TextOut(handle->lowlevel->gdi.hDC, point->x, point->y, text, ttf->px);*/
return 0;
}
static int dw_MwTextWidth(MwFLFont ttf, const char* text) {
int tw = 15;
int tw = 1;
return tw + 1;
}

3297
src/text/dwrite_2.h Normal file

File diff suppressed because it is too large Load diff

View file

@ -406,7 +406,7 @@ interface IDWriteBitmapRenderTarget3;
/* Headers for imported files */
#include <dwrite_2.h>
#include "dwrite_2.h"
#ifdef __cplusplus
extern "C" {