mirror of
https://invent.kde.org/graphics/okular
synced 2024-09-19 07:51:27 +00:00
82cd404f88
svn path=/trunk/kdegraphics/kpdf/; revision=340184
66 lines
1.3 KiB
C++
66 lines
1.3 KiB
C++
//========================================================================
|
|
//
|
|
// BuiltinFont.cc
|
|
//
|
|
// Copyright 2001-2003 Glyph & Cog, LLC
|
|
//
|
|
//========================================================================
|
|
|
|
#include <aconf.h>
|
|
|
|
#ifdef USE_GCC_PRAGMAS
|
|
#pragma implementation
|
|
#endif
|
|
|
|
#include <stdlib.h>
|
|
#include <string.h>
|
|
#include "gmem.h"
|
|
#include "FontEncodingTables.h"
|
|
#include "BuiltinFont.h"
|
|
|
|
//------------------------------------------------------------------------
|
|
|
|
BuiltinFontWidths::BuiltinFontWidths(BuiltinFontWidth *widths, int sizeA) {
|
|
int i, h;
|
|
|
|
size = sizeA;
|
|
tab = (BuiltinFontWidth **)gmalloc(size * sizeof(BuiltinFontWidth *));
|
|
for (i = 0; i < size; ++i) {
|
|
tab[i] = NULL;
|
|
}
|
|
for (i = 0; i < sizeA; ++i) {
|
|
h = hash(widths[i].name);
|
|
widths[i].next = tab[h];
|
|
tab[h] = &widths[i];
|
|
}
|
|
}
|
|
|
|
BuiltinFontWidths::~BuiltinFontWidths() {
|
|
gfree(tab);
|
|
}
|
|
|
|
GBool BuiltinFontWidths::getWidth(const char *name, Gushort *width) {
|
|
int h;
|
|
BuiltinFontWidth *p;
|
|
|
|
h = hash(name);
|
|
for (p = tab[h]; p; p = p->next) {
|
|
if (!strcmp(p->name, name)) {
|
|
*width = p->width;
|
|
return gTrue;
|
|
}
|
|
}
|
|
return gFalse;
|
|
}
|
|
|
|
int BuiltinFontWidths::hash(const char *name) {
|
|
const char *p;
|
|
unsigned int h;
|
|
|
|
h = 0;
|
|
for (p = name; *p; ++p) {
|
|
h = 17 * h + (int)(*p & 0xff);
|
|
}
|
|
return (int)(h % size);
|
|
}
|