本文整理汇总了C++中MathCell::GetMaxHeight方法的典型用法代码示例。如果您正苦于以下问题:C++ MathCell::GetMaxHeight方法的具体用法?C++ MathCell::GetMaxHeight怎么用?C++ MathCell::GetMaxHeight使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类MathCell
的用法示例。
在下文中一共展示了MathCell::GetMaxHeight方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: RecalculateSize
void GroupCell::RecalculateSize(CellParser& parser, int fontsize)
{
if (m_width == -1 || m_height == -1 || parser.ForceUpdate())
{
// special case
if (m_groupType == GC_TYPE_PAGEBREAK) {
m_width = 10;
m_height = 2;
m_center = 0;
m_indent = 0;
MathCell::RecalculateWidthsList(parser, fontsize);
return;
}
double scale = parser.GetScale();
m_input->RecalculateSizeList(parser, fontsize);
m_center = m_input->GetMaxCenter();
m_height = m_input->GetMaxHeight();
m_indent = parser.GetIndent();
if (m_output != NULL && !m_hide) {
MathCell *tmp = m_output;
while (tmp != NULL) {
tmp->RecalculateSize(parser, tmp->IsMath() ? m_mathFontSize : m_fontSize);
tmp = tmp->m_next;
}
m_outputRect.x = m_currentPoint.x;
m_outputRect.y = m_currentPoint.y - m_output->GetMaxCenter();
m_outputRect.width = 0;
m_outputRect.height = 0;
m_height = m_input->GetMaxHeight();
m_width = m_input->GetFullWidth(scale);
tmp = m_output;
while (tmp != NULL) {
if (tmp->BreakLineHere() || tmp == m_output) {
m_width = MAX(m_width, tmp->GetLineWidth(scale));
m_outputRect.width = MAX(m_outputRect.width, tmp->GetLineWidth(scale));
m_height += tmp->GetMaxHeight();
if (tmp->m_bigSkip)
m_height += MC_LINE_SKIP;
m_outputRect.height += tmp->GetMaxHeight() + MC_LINE_SKIP;
}
tmp = tmp->m_nextToDraw;
}
}
}
m_appendedCells = NULL;
}
示例2: GetMaxPoint
void Bitmap::GetMaxPoint(int* width, int* height)
{
MathCell* tmp = m_tree;
int currentHeight = 0;
int currentWidth = 0;
*width = 0;
*height = 0;
bool bigSkip = false;
bool firstCell = true;
while (tmp != NULL)
{
if (!tmp->m_isBroken)
{
if (tmp->BreakLineHere() || firstCell)
{
firstCell = false;
currentHeight += tmp->GetMaxHeight();
if (bigSkip)
currentHeight += MC_LINE_SKIP;
*height = currentHeight;
currentWidth = tmp->GetWidth();
*width = MAX(currentWidth, *width);
}
else
{
currentWidth += (tmp->GetWidth() + MC_CELL_SKIP);
*width = MAX(currentWidth - MC_CELL_SKIP, *width);
}
bigSkip = tmp->m_bigSkip;
}
tmp = tmp->m_nextToDraw;
}
}
示例3: RecalculateAppended
// We assume that appended cells will be in a new line!
void GroupCell::RecalculateAppended(CellParser& parser)
{
if (m_appendedCells == NULL)
return;
MathCell *tmp = m_appendedCells;
int fontsize = m_fontSize;
double scale = parser.GetScale();
// Recalculate widths of cells
while (tmp != NULL) {
tmp->RecalculateWidths(parser, tmp->IsMath() ? m_mathFontSize : m_fontSize);
tmp = tmp->m_next;
}
// Breakup cells and break lines
BreakUpCells(m_appendedCells, parser, fontsize, parser.GetClientWidth());
BreakLines(m_appendedCells, parser.GetClientWidth());
// Recalculate size of cells
tmp = m_appendedCells;
while (tmp != NULL) {
tmp->RecalculateSize(parser, tmp->IsMath() ? m_mathFontSize : m_fontSize);
tmp = tmp->m_next;
}
// Update widths
tmp = m_appendedCells;
while (tmp != NULL) {
if (tmp->BreakLineHere() || tmp == m_appendedCells) {
m_width = MAX(m_width, tmp->GetLineWidth(scale));
m_outputRect.width = MAX(m_outputRect.width, tmp->GetLineWidth(scale));
m_height += tmp->GetMaxHeight();
if (tmp->m_bigSkip)
m_height += MC_LINE_SKIP;
m_outputRect.height += tmp->GetMaxHeight() + MC_LINE_SKIP;
}
tmp = tmp->m_nextToDraw;
}
m_appendedCells = NULL;
}