Я использую Mako SDK и IJawsRenderer::render() для рендеринга всех узлов IDOMPathNodes с заполнением IDOMImageBrush. Когда я это делаю, рендерер выдает исключение error 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 pt x 1 pt (или 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;
}
}