mirror of https://github.com/KLayout/klayout.git
WIP: new fixed font bitmaps - needs improvement
This commit is contained in:
parent
861a6fdfcc
commit
37e402e9bd
|
|
@ -28,6 +28,9 @@
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
|
||||||
|
// The system font to use
|
||||||
|
static const char *font_name = "Liberation Mono";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief A small utility program to produce the fixed font definition file
|
* @brief A small utility program to produce the fixed font definition file
|
||||||
* Run this binary and redirect the output to "laybasic/fixedFont.h".
|
* Run this binary and redirect the output to "laybasic/fixedFont.h".
|
||||||
|
|
@ -43,19 +46,34 @@ main (int argc, char *argv [])
|
||||||
|
|
||||||
std::string table;
|
std::string table;
|
||||||
|
|
||||||
int sz[] = { 9, 11, 13, 0 };
|
// 33% increments:
|
||||||
|
int sz[] = { 9, 11, 13, 16, 21, 27 };
|
||||||
|
const char *sz_name[] = { "Small", "Medium", "Large", "XLarge", "XXLarge", "XXXLarge" };
|
||||||
|
|
||||||
|
int resolutions = 6;
|
||||||
|
|
||||||
|
int font_sizes = int (sizeof (sz) / sizeof (sz[0]));
|
||||||
|
|
||||||
|
printf("\nconst int ff_resolutions = %d;\n", resolutions);
|
||||||
|
printf("const int ff_sizes = %d;\n", font_sizes);
|
||||||
|
|
||||||
|
printf("\nconst char *ff_size_name (int sz) {\n");
|
||||||
|
for (int s = 0; s < font_sizes; ++s) {
|
||||||
|
printf(" if (sz == %d) { return \"%s\"; }\n", s, sz_name [s]);
|
||||||
|
}
|
||||||
|
printf(" return \"\";\n}\n");
|
||||||
|
|
||||||
int os = 1;
|
int os = 1;
|
||||||
|
|
||||||
for (int r = 1; r <= 6; ++r) {
|
for (int r = 1; r <= resolutions; ++r) {
|
||||||
|
|
||||||
for (int s = 0; sz[s] > 0; ++s) {
|
for (int s = 0; s < font_sizes; ++s) {
|
||||||
|
|
||||||
char b[1024];
|
char b[1024];
|
||||||
sprintf (b, " FixedFont (ff%d_height, ff%d_line_height, ff%d_width, ff%d_first_char, sizeof (ff%d_data) / sizeof (uint32_t) / (ff%d_height * ff%d_stride), ff%d_data, ff%d_stride),\n", os, os, os, os, os, os, os, os, os);
|
sprintf (b, " FixedFont (ff%d_height, ff%d_line_height, ff%d_width, ff%d_first_char, sizeof (ff%d_data) / sizeof (uint32_t) / (ff%d_height * ff%d_stride), ff%d_data, ff%d_stride),\n", os, os, os, os, os, os, os, os, os);
|
||||||
table += b;
|
table += b;
|
||||||
|
|
||||||
QFont f (QString::fromLatin1 ("Liberation Mono"), r * sz[s]);
|
QFont f (QString::fromLatin1 (font_name), r * sz[s]);
|
||||||
f.setStyleStrategy(QFont::StyleStrategy ((f.styleStrategy() & ~QFont::PreferAntialias) | QFont::NoAntialias));
|
f.setStyleStrategy(QFont::StyleStrategy ((f.styleStrategy() & ~QFont::PreferAntialias) | QFont::NoAntialias));
|
||||||
|
|
||||||
QFontMetrics fm (f);
|
QFontMetrics fm (f);
|
||||||
|
|
|
||||||
File diff suppressed because it is too large
Load Diff
|
|
@ -37,18 +37,30 @@ FixedFont::FixedFont (unsigned int h, unsigned int lh, unsigned int w, unsigned
|
||||||
// .. nothing yet ..
|
// .. nothing yet ..
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
FixedFont::font_sizes ()
|
||||||
|
{
|
||||||
|
return ff_sizes;
|
||||||
|
}
|
||||||
|
|
||||||
|
const char *
|
||||||
|
FixedFont::font_size_name (int sz)
|
||||||
|
{
|
||||||
|
return ff_size_name (sz);
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
FixedFont::set_default_font_size (int fs)
|
FixedFont::set_default_font_size (int fs)
|
||||||
{
|
{
|
||||||
ms_default_font_size = std::min (2, std::max (0, fs));
|
ms_default_font_size = std::min (ff_sizes - 1, std::max (0, fs));
|
||||||
}
|
}
|
||||||
|
|
||||||
const FixedFont &
|
const FixedFont &
|
||||||
FixedFont::get_font (double resolution)
|
FixedFont::get_font (double resolution)
|
||||||
{
|
{
|
||||||
int fs = ms_default_font_size;
|
int fs = ms_default_font_size;
|
||||||
int od = std::max (1, std::min (int (sizeof (fonts) / sizeof (fonts [0])) / 3, int (1.0 / resolution + 0.5))) - 1;
|
int od = std::max (1, std::min (ff_resolutions, int (1.0 / resolution + 0.5))) - 1;
|
||||||
return fonts [od * 3 + fs];
|
return fonts [od * ff_sizes + fs];
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -27,10 +27,20 @@ public:
|
||||||
*/
|
*/
|
||||||
static const FixedFont &get_font (double resolution);
|
static const FixedFont &get_font (double resolution);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Gets the number of font sizes available
|
||||||
|
*/
|
||||||
|
static int font_sizes ();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Gets the size description ("small", "large", ...)
|
||||||
|
*/
|
||||||
|
static const char *font_size_name (int sz);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Set the default font size
|
* @brief Set the default font size
|
||||||
*
|
*
|
||||||
* Allowed values are 0 (small), 1 (medium) or 2 (large)
|
* Allowed values are 0 (small), 1 (medium) or 2 (large) etc.
|
||||||
*/
|
*/
|
||||||
static void set_default_font_size (int fs);
|
static void set_default_font_size (int fs);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -45,6 +45,8 @@
|
||||||
|
|
||||||
#include "layWidgets.h"
|
#include "layWidgets.h"
|
||||||
#include "layFileDialog.h"
|
#include "layFileDialog.h"
|
||||||
|
#include "layFixedFont.h"
|
||||||
|
|
||||||
#include "dbHershey.h"
|
#include "dbHershey.h"
|
||||||
|
|
||||||
#include <QColorDialog>
|
#include <QColorDialog>
|
||||||
|
|
@ -1424,6 +1426,11 @@ LayoutViewConfigPage7::LayoutViewConfigPage7 (QWidget *parent)
|
||||||
{
|
{
|
||||||
mp_ui = new Ui::LayoutViewConfigPage7 ();
|
mp_ui = new Ui::LayoutViewConfigPage7 ();
|
||||||
mp_ui->setupUi (this);
|
mp_ui->setupUi (this);
|
||||||
|
|
||||||
|
mp_ui->default_font_size->clear ();
|
||||||
|
for (int i = 0; i < lay::FixedFont::font_sizes (); ++i) {
|
||||||
|
mp_ui->default_font_size->addItem (QString::fromUtf8 (lay::FixedFont::font_size_name (i)));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
LayoutViewConfigPage7::~LayoutViewConfigPage7 ()
|
LayoutViewConfigPage7::~LayoutViewConfigPage7 ()
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue