Исключение, выданное IJawsRenderer () - PullRequest
1 голос
/ 09 апреля 2019

Я использую Mako SDK и IJawsRenderer :: render () для рендеринга всех IDOMPathNodes с заполнением IDOMImageBrush.Когда я это делаю, средство визуализации выдает ошибку 2000 для некоторых узлов, но не для всех.В чем может быть причина?

IDOMBrushPtr pBrush;
pPath->getFill(pBrush);
if (pBrush)
{
    IDOMBrush::eBrushType fillStyle = pBrush->getBrushType();
    switch (fillStyle)
    {
    case IDOMBrush::eImage:
    {
        IJawsRendererPtr renderer = IJawsRenderer::create(jawsMako);
        IDOMImagePtr renderedImage;
        renderedImage = renderer->render(pNode, 800); // This is where the exception will eventually happen.
        break;
    }
    default:
        break;
    }
}

1 Ответ

0 голосов
/ 09 апреля 2019

Возможно, выброшено исключение, потому что путь, переданный к средству визуализации, слишком мал. Для рендера существует нижний предел 1pt x 1pt (или 1,33 x 1,33 единиц Мако). Измените код, чтобы убедиться, что ограничивающая рамка узла достаточно велика, например:

const double minimumRenderSize = 96.0 / 72.0;
...
IDOMBrushPtr pBrush;
pPath->getFill(pBrush);
FRect box;
pPath->getBounds(box);
box.dX = box.dX < minimumRenderSize ? minimumRenderSize : box.dX;
box.dY = box.dY < minimumRenderSize ? minimumRenderSize : box.dY;
if (pBrush)
{
    IDOMBrush::eBrushType fillStyle = pBrush->getBrushType();
    switch (fillStyle)
    {
    case IDOMBrush::eImage:
    {
        IJawsRendererPtr renderer = IJawsRenderer::create(jawsMako);
        IDOMImagePtr renderedImage;
        renderedImage = renderer->render(pNode, 800, IDOMColorSpacesRGB::create(jawsMako), box);
        break;
    }
    default:
        break;
    }
}
...