mirror of
https://github.com/ZDoom/gzdoom.git
synced 2024-11-11 15:21:51 +00:00
- exported DrawChar and DrawText.
This commit is contained in:
parent
52bec33c0d
commit
9e038b75fa
4 changed files with 109 additions and 30 deletions
|
@ -142,7 +142,7 @@ void DCanvas::DrawTexture (FTexture *img, double x, double y, int tags_first, ..
|
||||||
DrawTextureParms(img, parms);
|
DrawTextureParms(img, parms);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int ListGetInt(VMVa_List &tags);
|
int ListGetInt(VMVa_List &tags);
|
||||||
|
|
||||||
void DCanvas::DrawTexture(FTexture *img, double x, double y, VMVa_List &args)
|
void DCanvas::DrawTexture(FTexture *img, double x, double y, VMVa_List &args)
|
||||||
{
|
{
|
||||||
|
@ -487,7 +487,7 @@ static void ListEnd(VMVa_List &tags)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
static int ListGetInt(VMVa_List &tags)
|
int ListGetInt(VMVa_List &tags)
|
||||||
{
|
{
|
||||||
if (tags.curindex < tags.numargs && tags.args[tags.curindex].Type == REGT_INT)
|
if (tags.curindex < tags.numargs && tags.args[tags.curindex].Type == REGT_INT)
|
||||||
{
|
{
|
||||||
|
|
107
src/v_text.cpp
107
src/v_text.cpp
|
@ -47,6 +47,8 @@
|
||||||
#include "doomstat.h"
|
#include "doomstat.h"
|
||||||
#include "templates.h"
|
#include "templates.h"
|
||||||
|
|
||||||
|
int ListGetInt(VMVa_List &tags);
|
||||||
|
|
||||||
//==========================================================================
|
//==========================================================================
|
||||||
//
|
//
|
||||||
// DrawChar
|
// DrawChar
|
||||||
|
@ -82,6 +84,42 @@ void DCanvas::DrawChar (FFont *font, int normalcolor, double x, double y, int ch
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void DCanvas::DrawChar(FFont *font, int normalcolor, double x, double y, int character, VMVa_List &args)
|
||||||
|
{
|
||||||
|
if (font == NULL)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (normalcolor >= NumTextColors)
|
||||||
|
normalcolor = CR_UNTRANSLATED;
|
||||||
|
|
||||||
|
FTexture *pic;
|
||||||
|
int dummy;
|
||||||
|
|
||||||
|
if (NULL != (pic = font->GetChar(character, &dummy)))
|
||||||
|
{
|
||||||
|
DrawParms parms;
|
||||||
|
uint32_t tag = ListGetInt(args);
|
||||||
|
bool res = ParseDrawTextureTags(pic, x, y, tag, args, &parms, false);
|
||||||
|
if (!res) return;
|
||||||
|
parms.remap = font->GetColorTranslation((EColorRange)normalcolor);
|
||||||
|
DrawTextureParms(pic, parms);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
DEFINE_ACTION_FUNCTION(_Screen, DrawChar)
|
||||||
|
{
|
||||||
|
PARAM_PROLOGUE;
|
||||||
|
PARAM_POINTER(font, FFont);
|
||||||
|
PARAM_INT(cr);
|
||||||
|
PARAM_FLOAT(x);
|
||||||
|
PARAM_FLOAT(y);
|
||||||
|
PARAM_INT(chr);
|
||||||
|
|
||||||
|
VMVa_List args = { param + 5, 0, numparam - 5 };
|
||||||
|
screen->DrawChar(font, cr, x, y, chr, args);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
//==========================================================================
|
//==========================================================================
|
||||||
//
|
//
|
||||||
// DrawText
|
// DrawText
|
||||||
|
@ -90,32 +128,17 @@ void DCanvas::DrawChar (FFont *font, int normalcolor, double x, double y, int ch
|
||||||
//
|
//
|
||||||
//==========================================================================
|
//==========================================================================
|
||||||
|
|
||||||
void DCanvas::DrawText(FFont *font, int normalcolor, int x, int y, const char *string, int tag_first, ...)
|
void DCanvas::DrawTextCommon(FFont *font, int normalcolor, double x, double y, const char *string, DrawParms &parms)
|
||||||
{
|
{
|
||||||
int w;
|
int w;
|
||||||
const BYTE *ch;
|
const BYTE *ch;
|
||||||
int c;
|
int c;
|
||||||
int cx;
|
double cx;
|
||||||
int cy;
|
double cy;
|
||||||
int boldcolor;
|
int boldcolor;
|
||||||
FRemapTable *range;
|
FRemapTable *range;
|
||||||
int kerning;
|
int kerning;
|
||||||
FTexture *pic;
|
FTexture *pic;
|
||||||
DrawParms parms;
|
|
||||||
|
|
||||||
va_list tags;
|
|
||||||
|
|
||||||
if (font == NULL || string == NULL)
|
|
||||||
return;
|
|
||||||
|
|
||||||
va_start(tags, tag_first);
|
|
||||||
bool res = ParseDrawTextureTags(nullptr, 0, 0, tag_first, tags, &parms, true);
|
|
||||||
va_end(tags);
|
|
||||||
if (!res)
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
if (parms.celly == 0) parms.celly = font->GetHeight() + 1;
|
if (parms.celly == 0) parms.celly = font->GetHeight() + 1;
|
||||||
parms.celly *= parms.scaley;
|
parms.celly *= parms.scaley;
|
||||||
|
@ -172,6 +195,54 @@ void DCanvas::DrawText(FFont *font, int normalcolor, int x, int y, const char *s
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void DCanvas::DrawText(FFont *font, int normalcolor, double x, double y, const char *string, int tag_first, ...)
|
||||||
|
{
|
||||||
|
va_list tags;
|
||||||
|
DrawParms parms;
|
||||||
|
|
||||||
|
if (font == NULL || string == NULL)
|
||||||
|
return;
|
||||||
|
|
||||||
|
va_start(tags, tag_first);
|
||||||
|
bool res = ParseDrawTextureTags(nullptr, 0, 0, tag_first, tags, &parms, true);
|
||||||
|
va_end(tags);
|
||||||
|
if (!res)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
DrawTextCommon(font, normalcolor, x, y, string, parms);
|
||||||
|
}
|
||||||
|
|
||||||
|
void DCanvas::DrawText(FFont *font, int normalcolor, double x, double y, const char *string, VMVa_List &args)
|
||||||
|
{
|
||||||
|
DrawParms parms;
|
||||||
|
|
||||||
|
if (font == NULL || string == NULL)
|
||||||
|
return;
|
||||||
|
|
||||||
|
uint32_t tag = ListGetInt(args);
|
||||||
|
bool res = ParseDrawTextureTags(nullptr, 0, 0, tag, args, &parms, true);
|
||||||
|
if (!res)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
DrawTextCommon(font, normalcolor, x, y, string, parms);
|
||||||
|
}
|
||||||
|
|
||||||
|
DEFINE_ACTION_FUNCTION(_Screen, DrawText)
|
||||||
|
{
|
||||||
|
PARAM_PROLOGUE;
|
||||||
|
PARAM_POINTER(font, FFont);
|
||||||
|
PARAM_INT(cr);
|
||||||
|
PARAM_FLOAT(x);
|
||||||
|
PARAM_FLOAT(y);
|
||||||
|
PARAM_STRING(chr);
|
||||||
|
|
||||||
|
VMVa_List args = { param + 5, 0, numparam - 5 };
|
||||||
|
screen->DrawText(font, cr, x, y, chr, args);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
//==========================================================================
|
//==========================================================================
|
||||||
//
|
//
|
||||||
|
|
|
@ -269,8 +269,10 @@ public:
|
||||||
#undef DrawText // See WinUser.h for the definition of DrawText as a macro
|
#undef DrawText // See WinUser.h for the definition of DrawText as a macro
|
||||||
#endif
|
#endif
|
||||||
// 2D Text drawing
|
// 2D Text drawing
|
||||||
void DrawText (FFont *font, int normalcolor, int x, int y, const char *string, int tag_first, ...);
|
void DrawText(FFont *font, int normalcolor, double x, double y, const char *string, int tag_first, ...);
|
||||||
|
void DrawText(FFont *font, int normalcolor, double x, double y, const char *string, VMVa_List &args);
|
||||||
void DrawChar(FFont *font, int normalcolor, double x, double y, int character, int tag_first, ...);
|
void DrawChar(FFont *font, int normalcolor, double x, double y, int character, int tag_first, ...);
|
||||||
|
void DrawChar(FFont *font, int normalcolor, double x, double y, int character, VMVa_List &args);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
BYTE *Buffer;
|
BYTE *Buffer;
|
||||||
|
@ -279,6 +281,8 @@ protected:
|
||||||
int Pitch;
|
int Pitch;
|
||||||
int LockCount;
|
int LockCount;
|
||||||
|
|
||||||
|
void DrawTextCommon(FFont *font, int normalcolor, double x, double y, const char *string, DrawParms &parms);
|
||||||
|
|
||||||
bool ClipBox (int &left, int &top, int &width, int &height, const BYTE *&src, const int srcpitch) const;
|
bool ClipBox (int &left, int &top, int &width, int &height, const BYTE *&src, const int srcpitch) const;
|
||||||
void DrawTextureV(FTexture *img, double x, double y, uint32 tag, va_list tags) = delete;
|
void DrawTextureV(FTexture *img, double x, double y, uint32 tag, va_list tags) = delete;
|
||||||
virtual void DrawTextureParms(FTexture *img, DrawParms &parms);
|
virtual void DrawTextureParms(FTexture *img, DrawParms &parms);
|
||||||
|
|
|
@ -66,6 +66,10 @@ struct Screen native
|
||||||
native static int GetWidth();
|
native static int GetWidth();
|
||||||
native static int GetHeight();
|
native static int GetHeight();
|
||||||
native static void DrawHUDTexture(TextureID tex, double x, double y);
|
native static void DrawHUDTexture(TextureID tex, double x, double y);
|
||||||
|
native static vararg void DrawTexture(TextureID tex, bool animate, double x, double y, ...);
|
||||||
|
native static vararg void DrawChar(Font font, int normalcolor, double x, double y, int character, ...);
|
||||||
|
native static vararg void DrawText(Font font, int normalcolor, double x, double y, String text, ...);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
class BrokenLines : Object native
|
class BrokenLines : Object native
|
||||||
|
|
Loading…
Reference in a new issue