/* Copyright (C) 2019-2020, Dirk Krause SPDX-License-Identifier: BSD-3-Clause */ /* WARNING: This file was generated by the dkct program (see http://dktools.sourceforge.net/ for details). Changes you make here will be lost if dkct is run again! You should modify the original source and run dkct on it. Original source: WxdkdrawFont.cpt */ /** @file WxdkdrawFont.cpp The WxdkdrawFont module. */ #line 75 "WxdkdrawFont.cpt" #include "WxdkdrawFont.h" #include "wxdkdraw.h" #line 83 "WxdkdrawFont.cpt" /** Font family names for font 00. */ static wxChar const * const font_families_00[] = { /* 0 */ wxT("Times"), /* 1 */ wxT("Nimbus Roman"), /* 2 */ wxT("Nimbus Roman No9 L"), /* 3 */ wxT("ptmr"), /* 4 */ wxT("Times New Roman"), /* 5 */ wxT("Bodoni MT"), NULL #line 97 "WxdkdrawFont.cpt" }; /** Font family names for font 04. */ static wxChar const * const font_families_04[] = { /* 0 */ wxT("AvantGarde"), /* 1 */ wxT("URW Gothic"), /* 2 */ wxT("URW Gothic L"), /* 3 */ wxT("pagk"), /* 4 */ wxT("Trebuchet MS"), /* 5 */ wxT("Verdana"), NULL #line 112 "WxdkdrawFont.cpt" }; /** Font family names for font 08. */ static wxChar const * const font_families_08[] = { /* 0 */ wxT("Bookman"), /* 1 */ wxT("URW Bookman"), /* 2 */ wxT("URW Bookman L"), /* 3 */ wxT("pbkl"), /* 4 */ wxT("Bookman Old Style"), /* 5 */ wxT("Times New Roman"), NULL #line 127 "WxdkdrawFont.cpt" }; /** Font family names for font 12. */ static wxChar const * const font_families_12[] = { /* 0 */ wxT("Courier"), /* 1 */ wxT("Nimbus Mono PS"), /* 2 */ wxT("Nimbus Mono L"), /* 3 */ wxT("pcr"), /* 4 */ wxT("Courier New"), NULL #line 141 "WxdkdrawFont.cpt" }; /** Font family names for font 16. */ static wxChar const * const font_families_16[] = { /* 0 */ wxT("Helvetica"), /* 1 */ wxT("Nimbus Sans"), /* 2 */ wxT("Nimbus Sans L"), /* 3 */ wxT("phv"), /* 4 */ wxT("Arial"), /* 5 */ wxT("Gill Sans MT"), /* 6 */ wxT("Lucida Sans"), /* 7 */ wxT("Tahoma"), NULL #line 158 "WxdkdrawFont.cpt" }; /** Font family names for font 20. */ static wxChar const * const font_families_20[] = { /* 0 */ wxT("Helvetica-Narrow"), /* 1 */ wxT("Nimbus Sans Narrow"), /* 2 */ wxT("Nimbus Sans L"), /* 3 */ wxT("phv"), /* 4 */ wxT("Arial Narrow"), /* 5 */ wxT("Arial"), NULL #line 173 "WxdkdrawFont.cpt" }; /** Font family names for font 24. */ static wxChar const * const font_families_24[] = { /* 0 */ wxT("C059"), /* 1 */ wxT("Century Schoolbook"), /* 2 */ wxT("Century Schoolbook L"), /* 3 */ wxT("NewCenturySchlbk"), /* 4 */ wxT("pnc"), /* 5 */ wxT("Times New Roman"), NULL #line 188 "WxdkdrawFont.cpt" }; /** Font family names for font 28. */ static wxChar const * const font_families_28[] = { /* 0 */ wxT("Palatino"), /* 1 */ wxT("P052"), /* 2 */ wxT("URW Palladio L"), /* 3 */ wxT("Palatino Linotype"), /* 4 */ wxT("ppl"), /* 5 */ wxT("Times New Roman"), NULL #line 203 "WxdkdrawFont.cpt" }; /** Font family names for font 32. */ static wxChar const * const font_families_32[] = { NULL #line 212 "WxdkdrawFont.cpt" }; /** Font family names for font 33. */ static wxChar const * const font_families_33[] = { /* 0 */ wxT("ZapfChancery"), /* 1 */ wxT("Z003"), /* 2 */ wxT("URW Chancery L"), /* 3 */ wxT("pzc"), /* 4 */ wxT("Edwardian Script ITC"), /* 5 */ wxT("Blackadder ITC"), NULL #line 226 "WxdkdrawFont.cpt" }; /** Font family names for font 34. */ static wxChar const * const font_families_34[] = { /* 0 */ wxT("ZapfDingbats"), /* 1 */ wxT("D050000L"), /* 2 */ wxT("Dingbats"), /* 3 */ wxT("pzdr"), /* 4 */ wxT("WingDings"), NULL #line 239 "WxdkdrawFont.cpt" }; /** Information about one font. */ typedef struct { wxFontFamily f; /**< Font family. */ wxFontStyle s; /**< Font style. */ wxFontWeight w; /**< Font weight. */ wxChar const * const *n; /**< Font names array. */ } font_info_t; /** The 35 fonts. */ static const font_info_t font_info[] = { { wxFONTFAMILY_ROMAN, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_NORMAL, font_families_00 }, { wxFONTFAMILY_ROMAN, wxFONTSTYLE_ITALIC, wxFONTWEIGHT_NORMAL, font_families_00 }, { wxFONTFAMILY_ROMAN, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_BOLD, font_families_00 }, { wxFONTFAMILY_ROMAN, wxFONTSTYLE_ITALIC, wxFONTWEIGHT_BOLD, font_families_00 }, { wxFONTFAMILY_SWISS, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_NORMAL, font_families_04 }, { wxFONTFAMILY_SWISS, wxFONTSTYLE_ITALIC, wxFONTWEIGHT_NORMAL, font_families_04 }, { wxFONTFAMILY_SWISS, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_BOLD, font_families_04 }, { wxFONTFAMILY_SWISS, wxFONTSTYLE_ITALIC, wxFONTWEIGHT_BOLD, font_families_04 }, { wxFONTFAMILY_ROMAN, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_NORMAL, font_families_08 }, { wxFONTFAMILY_ROMAN, wxFONTSTYLE_ITALIC, wxFONTWEIGHT_NORMAL, font_families_08 }, { wxFONTFAMILY_ROMAN, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_BOLD, font_families_08 }, { wxFONTFAMILY_ROMAN, wxFONTSTYLE_ITALIC, wxFONTWEIGHT_BOLD, font_families_08 }, { wxFONTFAMILY_TELETYPE, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_NORMAL, font_families_12 }, { wxFONTFAMILY_TELETYPE, wxFONTSTYLE_ITALIC, wxFONTWEIGHT_NORMAL, font_families_12 }, { wxFONTFAMILY_TELETYPE, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_BOLD, font_families_12 }, { wxFONTFAMILY_TELETYPE, wxFONTSTYLE_ITALIC, wxFONTWEIGHT_BOLD, font_families_12 }, { wxFONTFAMILY_SWISS, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_NORMAL, font_families_16 }, { wxFONTFAMILY_SWISS, wxFONTSTYLE_ITALIC, wxFONTWEIGHT_NORMAL, font_families_16 }, { wxFONTFAMILY_SWISS, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_BOLD, font_families_16 }, { wxFONTFAMILY_SWISS, wxFONTSTYLE_ITALIC, wxFONTWEIGHT_BOLD, font_families_16 }, { wxFONTFAMILY_SWISS, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_NORMAL, font_families_20 }, { wxFONTFAMILY_SWISS, wxFONTSTYLE_ITALIC, wxFONTWEIGHT_NORMAL, font_families_20 }, { wxFONTFAMILY_SWISS, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_BOLD, font_families_20 }, { wxFONTFAMILY_SWISS, wxFONTSTYLE_ITALIC, wxFONTWEIGHT_BOLD, font_families_20 }, { wxFONTFAMILY_ROMAN, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_NORMAL, font_families_24 }, { wxFONTFAMILY_ROMAN, wxFONTSTYLE_ITALIC, wxFONTWEIGHT_NORMAL, font_families_24 }, { wxFONTFAMILY_ROMAN, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_BOLD, font_families_24 }, { wxFONTFAMILY_ROMAN, wxFONTSTYLE_ITALIC, wxFONTWEIGHT_BOLD, font_families_24 }, { wxFONTFAMILY_ROMAN, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_NORMAL, font_families_28 }, { wxFONTFAMILY_ROMAN, wxFONTSTYLE_ITALIC, wxFONTWEIGHT_NORMAL, font_families_28 }, { wxFONTFAMILY_ROMAN, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_BOLD, font_families_28 }, { wxFONTFAMILY_ROMAN, wxFONTSTYLE_ITALIC, wxFONTWEIGHT_BOLD, font_families_28 }, { wxFONTFAMILY_DEFAULT, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_NORMAL, font_families_32 }, { wxFONTFAMILY_SCRIPT, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_NORMAL, font_families_33 }, { wxFONTFAMILY_DECORATIVE, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_NORMAL, font_families_34 } }; int wxdfont_compare(const void *l, const void *r, int DK4_ARG_UNUSED(cr)) { Wxd_font_t const *pl; Wxd_font_t const *pr; int back = 0; #line 478 "WxdkdrawFont.cpt" DK4_UNUSED_ARG(cr) if (NULL != l) { if (NULL != r) { pl = (Wxd_font_t const *)l; pr = (Wxd_font_t const *)r; if (pl->find > pr->find) { #line 484 "WxdkdrawFont.cpt" back = 1; } else { if (pl->find < pr->find) { #line 488 "WxdkdrawFont.cpt" back = -1; } else { if (pl->fsz > pr->fsz) { #line 492 "WxdkdrawFont.cpt" back = 1; } else { if (pl->fsz < pr->fsz) { #line 496 "WxdkdrawFont.cpt" back = -1; } #if TRACE_DEBUG else { #line 500 "WxdkdrawFont.cpt" } #endif } } } } else { #line 507 "WxdkdrawFont.cpt" back = 1; } } else { if (NULL != r) { #line 512 "WxdkdrawFont.cpt" back = -1; } } #line 515 "WxdkdrawFont.cpt" return back; } Wxd_font_t * wxdfont_new(uint8_t find, uint16_t fsz) { Wxd_font_t *back = NULL; #line 525 "WxdkdrawFont.cpt" back = dk4mem_new(Wxd_font_t,1,NULL); if (NULL != back) { back->font = NULL; back->fsz = fsz; back->find = find; back->used = false; back->attempted = false; } #line 533 "WxdkdrawFont.cpt" return back; } void wxdfont_delete(Wxd_font_t *ptr) { #line 542 "WxdkdrawFont.cpt" if (NULL != ptr) { #line 544 "WxdkdrawFont.cpt" if (NULL != ptr->font) { delete (ptr->font); ptr->font = NULL; } dk4mem_free(ptr); } #line 550 "WxdkdrawFont.cpt" } wxFont * wxdfont_get_font(Wxd_font_t *ptr) { wxFont *back = NULL; #line 559 "WxdkdrawFont.cpt" if (NULL != ptr) { back = ptr->font; } #line 562 "WxdkdrawFont.cpt" return back; } void wxdfont_find_font(Wxd_font_t *ptr, double zoom, double res, bool exf) { wxChar const * const *nptr; /* Traverse names */ wxFontFamily ffam = wxFONTFAMILY_DEFAULT; /* Font family */ wxFontStyle fsty = wxFONTSTYLE_NORMAL; /* Font style */ wxFontWeight fwei = wxFONTWEIGHT_NORMAL; /* Font weight */ int ifsz; /* Font size as int */ bool cc; /* Flag: can continue */ #line 577 "WxdkdrawFont.cpt" ifsz = (int)dk4ma_rint((zoom * (double)(ptr->fsz) *res) / 72.27); if (0 < ifsz) { wxSize fspx(0, ifsz); ffam = font_info[ptr->find].f; fsty = font_info[ptr->find].s; fwei = font_info[ptr->find].w; nptr = font_info[ptr->find].n; if (exf) { /* Use exact font specified by family and features */ cc = true; while (cc) { if (NULL != *nptr) { wxString facename(*nptr); ptr->font = new wxFont(fspx,ffam,fsty,fwei,false,facename); if (NULL != ptr->font) { if (ptr->font->IsOk()) { cc = false; #line 596 "WxdkdrawFont.cpt" } else { delete (ptr->font); ptr->font = NULL; } } } else { cc = false; ptr->font = new wxFont(fspx, ffam, fsty, fwei); if (NULL != ptr->font) { if (!(ptr->font->IsOk())) { delete (ptr->font); ptr->font = NULL; } } } } } else { /* Use font specified by type and features */ ptr->font = new wxFont(fspx, ffam, fsty, fwei); if (NULL != ptr->font) { if (!(ptr->font->IsOk())) { delete (ptr->font); ptr->font = NULL; } } } #if TRACE_DEBUG if (NULL != ptr->font) { wxString facestr = (ptr->font)->GetFaceName(); wxString userdes = (ptr->font)->GetNativeFontInfoUserDesc(); wxCStrData facedata = facestr.c_str(); wxCStrData userdata = userdes.c_str(); wxChar const *facename = (wxChar const *)facedata; wxChar const *username = (wxChar const *)userdata; if (NULL != facename) { #line 637 "WxdkdrawFont.cpt" #line 638 "WxdkdrawFont.cpt" } } else { #line 641 "WxdkdrawFont.cpt" } #endif } #line 645 "WxdkdrawFont.cpt" } /* vim: set ai sw=4 ts=4 : */