Add JP's BDF font conversion program
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@3813 42af7a65-404d-4744-a932-0658087f49c3
This commit is contained in:
parent
06090fae16
commit
d81ddbd8b5
@ -12,7 +12,7 @@
|
||||
<h1><big><font color="#3c34ec">
|
||||
<i>NX Graphics Subsystem</i>
|
||||
</font></big></h1>
|
||||
<p>Last Updated: July 19, 2011</p>
|
||||
<p>Last Updated: July 23, 2011</p>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
@ -178,14 +178,17 @@
|
||||
</ul>
|
||||
</p>
|
||||
<p>
|
||||
<big><b>Appendix C</b> <a href="#testcoverage">NX Test Coverage</a></big>
|
||||
<big><b>Appendix C</b> <a href="#installnewfonts">Installing New Fonts</a></big>
|
||||
</p>
|
||||
<p>
|
||||
<big><b>Appendix D</b> <a href="#testcoverage">NX Test Coverage</a></big>
|
||||
</p>
|
||||
<ul>
|
||||
<i><b>Table C.1:</b> <a href="#nxglibcoverage">NXGLIB API Test Coverage</a></i><br>
|
||||
<i><b>Table C.2:</b> <a href="#nxcbcoverage">NX Server Callbacks Test Coverage</a></i><br>
|
||||
<i><b>Table C.3:</b> <a href="#nxcoverage">NX API Test Coverage</a></i><br>
|
||||
<i><b>Table C.4:</b> <a href="#nxtkcoverage">NXTK API Test Coverage</a></i><br>
|
||||
<i><b>Table C.5:</b> <a href="#nxfontscoverage">NXFONTS API Test Coverage</a></i><br>
|
||||
<i><b>Table D.1:</b> <a href="#nxglibcoverage">NXGLIB API Test Coverage</a></i><br>
|
||||
<i><b>Table D.2:</b> <a href="#nxcbcoverage">NX Server Callbacks Test Coverage</a></i><br>
|
||||
<i><b>Table D.3:</b> <a href="#nxcoverage">NX API Test Coverage</a></i><br>
|
||||
<i><b>Table D.4:</b> <a href="#nxtkcoverage">NXTK API Test Coverage</a></i><br>
|
||||
<i><b>Table D.5:</b> <a href="#nxfontscoverage">NXFONTS API Test Coverage</a></i><br>
|
||||
</ul>
|
||||
</td>
|
||||
</tr>
|
||||
@ -2729,7 +2732,185 @@ int nxf_convert_32bpp(FAR uint32_t *dest, uint16_t height,
|
||||
<table width ="100%">
|
||||
<tr bgcolor="#e4e4e4">
|
||||
<td>
|
||||
<h1>Appendix C <a name="testcoverage">NX Test Coverage</a></h1>
|
||||
<h1>Appendix C <a name="installnewfonts">Installing New Fonts</a></h1>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<p>
|
||||
There is a tool called <i>bdf-converter</i> in the directory <code>tools/.</code>.
|
||||
The <i>bdf-converter</i> program be used to convert fonts in Bitmap Distribution Format (BDF) into fonts that can be used in the NX graphics system.
|
||||
</p>
|
||||
<p>
|
||||
Below are general instructions for creating and installing a new font in the NX graphic system:
|
||||
</p>
|
||||
<ol start="1">
|
||||
<li>
|
||||
<p>
|
||||
Locate a font in BDF format,
|
||||
</p>
|
||||
</li>
|
||||
<li>
|
||||
<p>
|
||||
Use the <i>bdf-converter</i> program to convert the BDF font to the NuttX font format.
|
||||
This will result in a C header file containing defintions.
|
||||
That header file should be installed at, for example, <code>graphics/nxfonts/nxfonts_myfont.h</code>.
|
||||
</p>
|
||||
</li>
|
||||
</ol>
|
||||
<p>
|
||||
Create a new NuttX configuration variable.
|
||||
For example, suppose you define the following variable: <code>CONFIG_NXFONT_MYFONT</code>.
|
||||
Then you would need to:
|
||||
</p>
|
||||
<ol start="3">
|
||||
<li>
|
||||
<p>
|
||||
Define <code>CONFIG_NXFONT_MYFONT=y</code> in your NuttX configuration file.
|
||||
</p>
|
||||
</li>
|
||||
</ol>
|
||||
<p>
|
||||
A font ID number has to be assigned for each new font.
|
||||
The font ID is defined in the file <code>include/nuttx/nxfonts.h</code>.
|
||||
Those definitions have to be extended to support your new font.
|
||||
Look at how the font ID enabled by <code>CONFIG_NXFONT_SANS23X27</code> is defined and add an ID for yournew font in a similar fashion:
|
||||
</p>
|
||||
<ol start="4">
|
||||
<li>
|
||||
<p>
|
||||
<code>include/nuttx/nxfonts.h</code>. Add you new font as a possible system default font:
|
||||
</p>
|
||||
<ul></pre>
|
||||
#if defined(CONFIG_NXFONT_SANS23X27)
|
||||
# define NXFONT_DEFAULT FONTID_SANS23X27
|
||||
#elif defined(CONFIG_NXFONT_MYFONT)
|
||||
# define NXFONT_DEFAULT FONTID_MYFONT
|
||||
#endif
|
||||
</pre><ul>
|
||||
<p>
|
||||
Then define the actual font ID.
|
||||
Make sure that the font ID value is unique:
|
||||
</p>
|
||||
<ul><pre>
|
||||
enum nx_fontid_e
|
||||
{
|
||||
FONTID_DEFAULT = 0 /* The default font */
|
||||
#ifdef CONFIG_NXFONT_SANS23X27
|
||||
, FONTID_SANS23X27 = 1 /* The 23x27 sans serif font */
|
||||
#endif
|
||||
#ifdef CONFIG_NXFONT_MYFONT
|
||||
, FONTID_MYFONT = 2 /* My shiny, new font */
|
||||
#endif
|
||||
...
|
||||
</pre></ul>
|
||||
</li>
|
||||
</ol>
|
||||
<p>
|
||||
New Add the font to the NX build system.
|
||||
There are several files that you have to modify to to this.
|
||||
Look how the build system uses the font CONFIG_NXFONT_SANS23X27 for examaples:
|
||||
</p>
|
||||
<ol start="5">
|
||||
<li>
|
||||
<p>
|
||||
<code>nuttx/graphics/Makefile</code>.
|
||||
This file needs logic to auto-generate a C source file from the header file that you generated with the the <i>bdf-converter</i> program.
|
||||
Notice <code>NXFONTS_FONTID=2</code>; this must be set to the same font ID value that you defined in the <code>include/nuttx/nxfonts.h</code> file.
|
||||
</p>
|
||||
<ul><pre>
|
||||
genfontsources:
|
||||
ifeq ($(CONFIG_NXFONT_SANS23X27),y)
|
||||
@$(MAKE) -C nxfonts -f Makefile.sources TOPDIR=$(TOPDIR) NXFONTS_FONTID=1 EXTRADEFINES=$(EXTRADEFINES)
|
||||
endif
|
||||
ifeq ($(CONFIG_NXFONT_MYFONT),y)
|
||||
@$(MAKE) -C nxfonts -f Makefile.sources TOPDIR=$(TOPDIR) NXFONTS_FONTID=2 EXTRADEFINES=$(EXTRADEFINES)
|
||||
endif
|
||||
</pre></ul>
|
||||
</li>
|
||||
<li>
|
||||
<p>
|
||||
<code>nuttx/graphics/nxfonts/Make.defs</code>.
|
||||
Set the make variable <code>NXFSET_CSRCS</code>.
|
||||
<code>NXFSET_CSRCS</code> determines the name of the font C file to build when <code>NXFONTS_FONTID=2</code>:
|
||||
</p>
|
||||
<ul><pre>
|
||||
ifeq ($(CONFIG_NXFONT_SANS23X27),y)
|
||||
NXFSET_CSRCS += nxfonts_bitmaps_sans23x27.c
|
||||
endif
|
||||
ifeq ($(CONFIG_NXFONT_MYFONT),y)
|
||||
NXFSET_CSRCS += nxfonts_bitmaps_myfont.c
|
||||
endif
|
||||
</pre></ul>
|
||||
</li>
|
||||
<li>
|
||||
<p>
|
||||
<code>nuttx/graphics/nxfonts/Makefile.sources</code>.
|
||||
This is the Makefile used in step 5 that will actually generate the font C file.
|
||||
So, given your </code>NXFONTS_FONTID=2</code>, it needs to determine a prefix to use for auto-generated variable and function names and (again) the name of the autogenerated file to create (this must be the same name that was used in <code>nuttx/graphics/nxfonts/Make.defs</code>):
|
||||
</p>
|
||||
<ul><pre>
|
||||
ifeq ($(NXFONTS_FONTID),1)
|
||||
NXFONTS_PREFIX := g_sans23x27_
|
||||
GEN_CSRC = nxfonts_bitmaps_sans23x27.c
|
||||
endif
|
||||
ifeq ($(NXFONTS_FONTID),2)
|
||||
NXFONTS_PREFIX := g_myfont_
|
||||
GEN_CSRC = nxfonts_bitmaps_myfont.c
|
||||
endif
|
||||
</pre></ul>
|
||||
</li>
|
||||
<li>
|
||||
<p>
|
||||
<code>graphics/nxfonts/nxfonts_bitmaps.c</code>.
|
||||
This is the file that contains the generic font structures.
|
||||
It is used as a "template&qout; file by <code>nuttx/graphics/nxfonts/Makefile.sources </code>to create your customized font data set at build time.
|
||||
</p>
|
||||
<ul><pre>
|
||||
#if NXFONTS_FONTID == 1
|
||||
# include "nxfonts_sans23x27.h"
|
||||
#elif NXFONTS_FONTID == 2
|
||||
# include "nxfonts_myfont.h"
|
||||
#else
|
||||
# error "No font ID specified"
|
||||
#endif
|
||||
</pre></ul>
|
||||
<p>
|
||||
Where <code>nxfonts_myfont.h<code> is the NuttX font file that we generated in
|
||||
step 2 using the <i>bdf-converter</i> tool.
|
||||
</p>
|
||||
<li>
|
||||
<p>
|
||||
Finally, we need to extend the logic that does the run-time font lookups so that can find our new font.
|
||||
The lookup function is <code>NXHANDLE nxf_getfonthandle(enum nx_fontid_e fontid)</code>.
|
||||
The new font information needs to be added to data structures used by that function:
|
||||
</p>
|
||||
<ul><pre>
|
||||
#ifdef CONFIG_NXFONT_SANS23X27
|
||||
extern const struct nx_fontpackage_s g_sans23x27_package;
|
||||
#endif
|
||||
#ifdef CONFIG_NXFONT_MYFONT
|
||||
extern const struct nx_fontpackage_s g_myfont_package;
|
||||
#endif
|
||||
|
||||
static FAR const struct nx_fontpackage_s *g_fontpackages[] =
|
||||
{
|
||||
#ifdef CONFIG_NXFONT_SANS23X27
|
||||
&g_sans23x27_package,
|
||||
#endif
|
||||
#ifdef CONFIG_NXFONT_MYFONT
|
||||
&g_myfont_package,
|
||||
#endif
|
||||
NULL
|
||||
};
|
||||
</pre></ul>
|
||||
</li>
|
||||
</ol>
|
||||
|
||||
<table width ="100%">
|
||||
<tr bgcolor="#e4e4e4">
|
||||
<td>
|
||||
<h1>Appendix D <a name="testcoverage">NX Test Coverage</a></h1>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
@ -2810,7 +2991,7 @@ make
|
||||
The following table describes the testing performed on each NX API:
|
||||
</p>
|
||||
|
||||
<center><h2>Table C.1: <a name="nxglibcoverage">NXGLIB API Test Coverage</a></h2></center>
|
||||
<center><h2>Table D.1: <a name="nxglibcoverage">NXGLIB API Test Coverage</a></h2></center>
|
||||
<center><table border="1" width="80%">
|
||||
<tr>
|
||||
<th width="40%">Function</th>
|
||||
@ -2910,7 +3091,7 @@ make
|
||||
</table></center>
|
||||
|
||||
|
||||
<center><h2>Table C.2: <a name="nxcbcoverage">NX Server Callbacks Test Coverage</a></h2></center>
|
||||
<center><h2>Table D.2: <a name="nxcbcoverage">NX Server Callbacks Test Coverage</a></h2></center>
|
||||
<center><table border="1" width="80%">
|
||||
<tr>
|
||||
<th width="40%">Function</th>
|
||||
@ -2939,7 +3120,7 @@ make
|
||||
</tr>
|
||||
</table></center>
|
||||
|
||||
<center><h2>Table C.3: <a name="nxcoverage">NX API Test Coverage</a></h2></center>
|
||||
<center><h2>Table D.3: <a name="nxcoverage">NX API Test Coverage</a></h2></center>
|
||||
<center><table border="1" width="80%">
|
||||
<tr>
|
||||
<th width="40%">Function</th>
|
||||
@ -3083,7 +3264,7 @@ make
|
||||
</table></center>
|
||||
|
||||
|
||||
<center><h2>Table C.4: <a name="nxtkcoverage">NXTK API Test Coverage</a></h2></center>
|
||||
<center><h2>Table D.4: <a name="nxtkcoverage">NXTK API Test Coverage</a></h2></center>
|
||||
<center><table border="1" width="80%">
|
||||
<tr>
|
||||
<th width="40%">Function</th>
|
||||
@ -3177,7 +3358,7 @@ make
|
||||
</tr>
|
||||
</table></center>
|
||||
|
||||
<center><h2>Table C.5: <a name="nxfontscoverage">NXFONTS API Test Coverage</a></h2></center>
|
||||
<center><h2>Table D.5: <a name="nxfontscoverage">NXFONTS API Test Coverage</a></h2></center>
|
||||
<center><table border="1" width="80%">
|
||||
<tr>
|
||||
<th width="40%">Function</th>
|
||||
|
Loading…
Reference in New Issue
Block a user