19#include <gwenhywfar/inherit.h>
20#include <gwenhywfar/debug.h>
21#include <gwenhywfar/gui_be.h>
22#include <gwenhywfar/i18n.h>
23#include <gwenhywfar/htmlctx_be.h>
24#include <gwenhywfar/o_image_be.h>
25#include <gwenhywfar/text.h>
26#include <gwenhywfar/debug.h>
27#include <gwenhywfar/syncio_memory.h>
28#include <gwenhywfar/directory.h>
89 return xctx->
getFont(fontName, fontSize, fontFlags);
95 const char *imageName) {
108void FOX16_HtmlCtxLinker::freeData(
void *bp,
void *p) {
119void FOX16_HtmlCtxLinker::freeFontData(
void *bp,
void *p) {
129void FOX16_HtmlCtxLinker::freeImageData(
void *bp,
void *p) {
145 ,m_iconSource(
NULL) {
151 FOX16_HtmlCtxLinker::freeData);
152 _font=FXApp::instance()->getNormalFont();
196 face=
_font->getName();
198 weight=FXFont::Normal;
199 slant=
_font->getSlant();
200 encoding=
_font->getEncoding();
206 slant=FXFont::Italic;
209 "Creating font [%s], size=%d, weight=%d, slant=%d, encoding=%d",
210 face.text(), size, weight, slant, encoding);
212 xfnt=
new FXFont(FXApp::instance(), face, size, weight, slant, encoding);
215 "Could not create font [%s], size=%d, weight=%d, slant=%d, encoding=%d",
216 face.text(), size, weight, slant, encoding);
221 FOX16_HtmlCtxLinker::freeFontData);
240 return _font->getTextWidth(str);
242 return xfnt->getTextWidth(str);
260 return _font->getTextHeight(str);
262 return xfnt->getTextHeight(str);
269 return fxcolorfromname(name);
305 for (i=0; i<indent; i++) fprintf(f,
" ");
306 fprintf(stderr,
"Object type: %d [%s] flags: %08x, x=%d, y=%d, w=%d, h=%d\n",
318 for (i=0; i<indent+2; i++) fprintf(f,
" ");
319 fprintf(stderr,
"fgcol=%06x, bgcol=%06x, fontsize=%d, fontflags=%08x, fontname=[%s]\n",
326 c=HtmlObject_Tree_GetFirstChild(o);
329 c=HtmlObject_Tree_GetNext(c);
366 ascent=xfnt->getFontAscent();
374 dc->setForeground(col);
381 dc->setBackground(col);
408 dc->setBackground(col);
409 dc->setForeground(col);
412 dc->fillRectangle(xOffset, yOffset, ximg->getWidth(), ximg->getHeight());
414 dc->drawImage(ximg, xOffset, yOffset);
423 c=HtmlObject_Tree_GetFirstChild(o);
425 _paint(dc, c, xOffset, yOffset);
426 c=HtmlObject_Tree_GetNext(c);
433 int xOffset,
int yOffset,
434 int xText,
int yText,
452 if (printX<w && printX+objectW>=0 &&
453 printY<h && printY+objectH>=0) {
457 dc->setForeground(FXRGB(255,0,0));
458 dc->fillRectangle(printX, printY,
476 ascent=xfnt->getFontAscent();
484 dc->setForeground(col);
491 dc->setBackground(col);
518 dc->setBackground(col);
519 dc->setForeground(col);
521 dc->fillRectangle(printX, printY, ximg->getWidth(), ximg->getHeight());
523 dc->drawImage(ximg, printX, printY);
533 c=HtmlObject_Tree_GetFirstChild(o);
535 _paintAt(dc, c, xOffset, yOffset, x, y, w, h);
536 c=HtmlObject_Tree_GetNext(c);
548 _paint(dc, o, xOffset, yOffset);
554 int xOffset,
int yOffset,
555 int xText,
int yText,
561 _paintAt(dc, o, xOffset, yOffset, xText, yText, w, h);
592 uint32_t fontFlags) {
598 return gui->
getFont(fontName, fontSize, fontFlags);
638 FOX16_HtmlCtxLinker::freeImageData);
GWEN_BUFFER * GWEN_Buffer_new(char *buffer, uint32_t size, uint32_t used, int take)
void GWEN_Buffer_free(GWEN_BUFFER *bf)
char * GWEN_Buffer_GetStart(const GWEN_BUFFER *bf)
static FOX16GUI_API FOX16_Gui * getFgGui()
HTML_FONT * getFont(const char *fontName, int fontSize, uint32_t fontFlags)
int getTextWidth(HTML_FONT *fnt, const char *s)
FXIconSource * m_iconSource
FXFont * _getFoxFont(HTML_FONT *fnt)
int getTextHeight(HTML_FONT *fnt, const char *s)
void setText(const char *s)
void addMediaPath(const char *s)
int layout(int width, int height)
void paint(FXDC *dc, int xOffset, int yOffset)
void setForegroundColor(FXColor c)
FOX16_HtmlCtx(uint32_t flags)
GWEN_XML_CONTEXT * _context
void _paintAt(FXDC *dc, HTML_OBJECT *o, int xOffset, int yOffset, int xText, int yText, int w, int h)
HTML_IMAGE * getImage(const char *imageName)
void paintAt(FXDC *dc, int xOffset, int yOffset, int xText, int yText, int w, int h)
void _paint(FXDC *dc, HTML_OBJECT *o, int xOffset, int yOffset)
HTML_FONT * getFont(const char *fontName, int fontSize, uint32_t fontFlags)
void setBackgroundColor(FXColor c)
uint32_t getColorFromName(const char *name)
#define DBG_DEBUG(dbg_logger, format, args...)
#define DBG_INFO(dbg_logger, format, args...)
#define DBG_ERROR(dbg_logger, format, args...)
GWENHYWFAR_API int GWEN_Directory_FindFileInPaths(const GWEN_STRINGLIST *paths, const char *filePath, GWEN_BUFFER *fbuf)
static void dumpObject(HTML_OBJECT *o, FILE *f, int indent)
struct GWEN_BUFFER GWEN_BUFFER
A dynamically resizeable text buffer.
HTMLCTX_GET_FONT_FN HtmlCtx_SetGetFontFn(GWEN_XML_CONTEXT *ctx, HTMLCTX_GET_FONT_FN fn)
GWEN_XML_CONTEXT * HtmlCtx_new(uint32_t flags)
HTML_OBJECT * HtmlCtx_GetRootObject(const GWEN_XML_CONTEXT *ctx)
int HtmlCtx_Layout(GWEN_XML_CONTEXT *ctx, int width, int height)
void HtmlCtx_SetStandardProps(GWEN_XML_CONTEXT *ctx, HTML_PROPS *pr)
HTMLCTX_GET_TEXT_HEIGHT_FN HtmlCtx_SetGetTextHeightFn(GWEN_XML_CONTEXT *ctx, HTMLCTX_GET_TEXT_HEIGHT_FN fn)
HTMLCTX_GET_IMAGE_FN HtmlCtx_SetGetImageFn(GWEN_XML_CONTEXT *ctx, HTMLCTX_GET_IMAGE_FN fn)
HTML_FONT * HtmlCtx_GetFont(GWEN_XML_CONTEXT *ctx, const char *fontName, int fontSize, uint32_t fontFlags)
void HtmlCtx_AddMediaPath(GWEN_XML_CONTEXT *ctx, const char *s)
HTMLCTX_GET_TEXT_WIDTH_FN HtmlCtx_SetGetTextWidthFn(GWEN_XML_CONTEXT *ctx, HTMLCTX_GET_TEXT_WIDTH_FN fn)
HTMLCTX_GET_COLOR_FROM_NAME_FN HtmlCtx_SetGetColorFromNameFn(GWEN_XML_CONTEXT *ctx, HTMLCTX_GET_COLOR_FROM_NAME_FN fn)
GWEN_STRINGLIST * HtmlCtx_GetMediaPaths(const GWEN_XML_CONTEXT *ctx)
int HtmlFont_GetFontSize(const HTML_FONT *fnt)
uint32_t HtmlFont_GetFontFlags(const HTML_FONT *fnt)
const char * HtmlFont_GetFontName(const HTML_FONT *fnt)
#define HTML_FONT_FLAGS_ITALIC
#define HTML_FONT_FLAGS_STRONG
struct HTML_FONT HTML_FONT
void HtmlImage_SetHeight(HTML_IMAGE *img, int i)
void HtmlImage_SetImageName(HTML_IMAGE *img, const char *s)
HTML_IMAGE * HtmlImage_new(void)
void HtmlImage_SetWidth(HTML_IMAGE *img, int i)
struct HTML_IMAGE HTML_IMAGE
HTML_OBJECT_TYPE HtmlObject_GetObjectType(const HTML_OBJECT *o)
int HtmlObject_GetWidth(const HTML_OBJECT *o)
uint32_t HtmlObject_GetFlags(const HTML_OBJECT *o)
const char * HtmlObject_GetText(const HTML_OBJECT *o)
int HtmlObject_GetX(const HTML_OBJECT *o)
int HtmlObject_GetY(const HTML_OBJECT *o)
HTML_PROPS * HtmlObject_GetProperties(const HTML_OBJECT *o)
int HtmlObject_GetHeight(const HTML_OBJECT *o)
struct HTML_OBJECT HTML_OBJECT
HTML_FONT * HtmlProps_GetFont(const HTML_PROPS *pr)
uint32_t HtmlProps_GetBackgroundColor(const HTML_PROPS *pr)
void HtmlProps_SetFont(HTML_PROPS *pr, HTML_FONT *fnt)
void HtmlProps_free(HTML_PROPS *pr)
uint32_t HtmlProps_GetForegroundColor(const HTML_PROPS *pr)
HTML_PROPS * HtmlProps_new(void)
struct HTML_PROPS HTML_PROPS
#define HTML_PROPS_NOCOLOR
#define GWEN_INHERIT_UNLINK(bt, t, element)
#define GWEN_INHERIT_ISOFTYPE(bt, t, element)
#define GWEN_INHERIT_SETDATA(bt, t, element, data, fn)
#define GWEN_INHERIT(bt, t)
#define GWEN_INHERIT_GETDATA(bt, t, element)
HTML_IMAGE * HtmlObject_Image_GetImage(const HTML_OBJECT *o)
struct GWEN_STRINGLISTSTRUCT GWEN_STRINGLIST
GWENHYWFAR_API int GWEN_XMLContext_ReadFromString(GWEN_XML_CONTEXT *ctx, const char *text)
void GWEN_XmlCtx_free(GWEN_XML_CONTEXT *ctx)
struct GWEN_XML_CONTEXT GWEN_XML_CONTEXT