---------------------------------------------------------------------*/ Bmf create/destroy */ ---------------------------------------------------------------------*/ ! * \brief bmfCreate() * * \param[in] dir [optional] directory holding pixa of character set * \param[in] fontsize 4, 6, 8, ... , 20 * \return bmf holding the bitmap font and associated information
| 111 | * </pre> |
| 112 | */ |
| 113 | L_BMF * |
| 114 | bmfCreate(const char *dir, |
| 115 | l_int32 fontsize) |
| 116 | { |
| 117 | L_BMF *bmf; |
| 118 | PIXA *pixa; |
| 119 | |
| 120 | PROCNAME("bmfCreate"); |
| 121 | |
| 122 | if (fontsize < 4 || fontsize > 20 || (fontsize % 2)) |
| 123 | return (L_BMF *)ERROR_PTR("fontsize must be in {4, 6, ..., 20}", |
| 124 | procName, NULL); |
| 125 | if ((bmf = (L_BMF *)LEPT_CALLOC(1, sizeof(L_BMF))) == NULL) |
| 126 | return (L_BMF *)ERROR_PTR("bmf not made", procName, NULL); |
| 127 | |
| 128 | if (!dir) { /* Generate from a string */ |
| 129 | pixa = pixaGenerateFontFromString(fontsize, &bmf->baseline1, |
| 130 | &bmf->baseline2, &bmf->baseline3); |
| 131 | } else { /* Look for the pixa in a directory */ |
| 132 | pixa = pixaGetFont(dir, fontsize, &bmf->baseline1, &bmf->baseline2, |
| 133 | &bmf->baseline3); |
| 134 | if (!pixa) { /* Not found; make it from a file */ |
| 135 | L_INFO("Generating pixa of bitmap fonts from file\n", procName); |
| 136 | pixa = pixaGenerateFontFromFile(dir, fontsize, &bmf->baseline1, |
| 137 | &bmf->baseline2, &bmf->baseline3); |
| 138 | if (!pixa) { /* Not made; make it from a string after all */ |
| 139 | L_ERROR("Failed to make font; use string\n", procName); |
| 140 | pixa = pixaGenerateFontFromString(fontsize, &bmf->baseline1, |
| 141 | &bmf->baseline2, &bmf->baseline3); |
| 142 | } |
| 143 | } |
| 144 | } |
| 145 | |
| 146 | if (!pixa) { |
| 147 | bmfDestroy(&bmf); |
| 148 | return (L_BMF *)ERROR_PTR("font pixa not made", procName, NULL); |
| 149 | } |
| 150 | |
| 151 | bmf->pixa = pixa; |
| 152 | bmf->size = fontsize; |
| 153 | if (dir) bmf->directory = stringNew(dir); |
| 154 | bmfMakeAsciiTables(bmf); |
| 155 | return bmf; |
| 156 | } |
| 157 | |
| 158 | |
| 159 | /*! |
no test coverage detected