1
0
mirror of https://github.com/pdf2htmlEX/pdf2htmlEX.git synced 2024-07-07 18:30:34 +00:00
pdf2htmlEX/src/HTMLState.h
2013-09-20 16:35:19 +08:00

75 lines
1.6 KiB
C++

/*
* Header file for HTMLState
* Copyright (C) 2013 Lu Wang <coolwanglu@gmail.com>
*/
#ifndef HTMLSTATE_H__
#define HTMLSTATE_H__
#include "Color.h"
namespace pdf2htmlEX {
struct FontInfo
{
long long id;
bool use_tounicode;
int em_size;
double space_width;
double ascent, descent;
bool is_type3;
/*
* As Type 3 fonts have a font matrix
* a glyph of 1pt can be very large or very small
* however it might not be true for other font formats such as ttf
*
* Therefore when we save a Type 3 font into ttf,
* we have to scale the font to about 1,
* then apply the scaling when using the font
*
* The scaling factor is stored as font_size_scale
*
* The value is 1 for other fonts
*/
double font_size_scale;
};
struct HTMLTextState
{
const FontInfo * font_info;
double font_size;
Color fill_color;
Color stroke_color;
double letter_space;
double word_space;
// relative to the previous state
double vertical_align;
// the offset cause by a single ' ' char
double single_space_offset(void) const {
double offset = word_space + letter_space;
if(font_info->em_size != 0)
offset += font_info->space_width * font_size;
return offset;
}
// calculate em_size of this state
double em_size(void) const {
return font_size * (font_info->ascent - font_info->descent);
}
};
struct HTMLLineState
{
double x,y;
double transform_matrix[4];
};
struct HTMLClipState
{
double xmin, xmax, ymin, ymax;
};
} // namespace pdf2htmlEX
#endif //HTMLSTATE_H__