void AP_FormatFrame_preview::draw(void) { GR_Painter painter(m_gc); UT_sint32 iWidth = m_gc->tlu (getWindowWidth()); UT_sint32 iHeight = m_gc->tlu (getWindowHeight()); UT_Rect pageRect(m_gc->tlu(7), m_gc->tlu(7), iWidth - m_gc->tlu(14), iHeight - m_gc->tlu(14)); painter.fillRect(GR_Graphics::CLR3D_Background, 0, 0, iWidth, iHeight); painter.clearArea(pageRect.left, pageRect.top, pageRect.width, pageRect.height); UT_RGBColor tmpCol; UT_RGBColor black(0, 0, 0); m_gc->setLineWidth(m_gc->tlu(1)); int border = m_gc->tlu(20); int cornerLength = m_gc->tlu(5); // // Draw the cell background // const gchar * pszBGCol = NULL; if(m_pFormatFrame->getImage()) { GR_Image * pImg = m_pFormatFrame->getImage(); FG_Graphic * pFG = m_pFormatFrame->getGraphic(); const char * szName = pFG->getDataId(); const UT_ByteBuf * pBB = static_cast<FG_GraphicRaster *>(pFG)->getBuffer(); if(pFG->getType() == FGT_Raster) { pImg = static_cast<GR_Image *>( m_gc->createNewImage( szName, pBB, pFG->getMimeType(), pageRect.width - 2*border, pageRect.height - 2*border, GR_Image::GRT_Raster)); } else { pImg = static_cast<GR_Image *>( m_gc->createNewImage( szName, pBB, pFG->getMimeType(), pageRect.width - 2*border, pageRect.height - 2*border, GR_Image::GRT_Vector)); } UT_Rect rec(pageRect.left + border, pageRect.top + border, pageRect.width - 2*border, pageRect.height - 2*border); painter.drawImage(pImg,pageRect.left + border, pageRect.top + border); delete pImg; } else { m_pFormatFrame->getPropVector().getProp(static_cast<const gchar *>("background-color"), pszBGCol); if (pszBGCol && *pszBGCol) { UT_parseColor(pszBGCol, tmpCol); painter.fillRect(tmpCol, pageRect.left + border, pageRect.top + border, pageRect.width - 2*border, pageRect.height - 2*border); } } // // Draw the cell corners // m_gc->setColor(UT_RGBColor(127,127,127)); // top left corner painter.drawLine(pageRect.left + border - cornerLength, pageRect.top + border, pageRect.left + border, pageRect.top + border); painter.drawLine(pageRect.left + border, pageRect.top + border - cornerLength, pageRect.left + border, pageRect.top + border); // top right corner painter.drawLine(pageRect.left + pageRect.width - border + cornerLength, pageRect.top + border, pageRect.left + pageRect.width - border, pageRect.top + border); painter.drawLine(pageRect.left + pageRect.width - border, pageRect.top + border - cornerLength, pageRect.left + pageRect.width - border, pageRect.top + border); // bottom left corner painter.drawLine(pageRect.left + border - cornerLength, pageRect.top + pageRect.height - border, pageRect.left + border, pageRect.top + pageRect.height - border); painter.drawLine(pageRect.left + border, pageRect.top + pageRect.height - border + cornerLength, pageRect.left + border, pageRect.top + pageRect.height - border); // bottom right corner painter.drawLine(pageRect.left + pageRect.width - border + cornerLength, pageRect.top + pageRect.height - border, pageRect.left + pageRect.width - border, pageRect.top + pageRect.height - border); painter.drawLine(pageRect.left + pageRect.width - border, pageRect.top + pageRect.height - border + cornerLength, pageRect.left + pageRect.width - border, pageRect.top + pageRect.height - border); // // Draw the cell borders // // right border if (m_pFormatFrame->getRightToggled()) { UT_sint32 linestyle = m_pFormatFrame->borderLineStyleRight(); if (linestyle == LS_DOTTED) m_gc->setLineProperties(1, GR_Graphics::JOIN_MITER, GR_Graphics::CAP_BUTT, GR_Graphics::LINE_DOTTED); else if (linestyle == LS_DASHED) m_gc->setLineProperties(1, GR_Graphics::JOIN_MITER, GR_Graphics::CAP_BUTT, GR_Graphics::LINE_ON_OFF_DASH); else m_gc->setLineProperties(1, GR_Graphics::JOIN_MITER, GR_Graphics::CAP_BUTT, GR_Graphics::LINE_SOLID); m_gc->setColor(m_pFormatFrame->borderColorRight()); UT_sint32 iRightThickness = UT_convertToLogicalUnits(m_pFormatFrame->getBorderThicknessRight().utf8_str()); m_gc->setLineWidth(iRightThickness); painter.drawLine(pageRect.left + pageRect.width - border, pageRect.top + border, pageRect.left + pageRect.width - border, pageRect.top + pageRect.height - border); } // left border if (m_pFormatFrame->getLeftToggled()) { UT_sint32 linestyle = m_pFormatFrame->borderLineStyleLeft(); if (linestyle == LS_DOTTED) m_gc->setLineProperties(1, GR_Graphics::JOIN_MITER, GR_Graphics::CAP_BUTT, GR_Graphics::LINE_DOTTED); else if (linestyle == LS_DASHED) m_gc->setLineProperties(1, GR_Graphics::JOIN_MITER, GR_Graphics::CAP_BUTT, GR_Graphics::LINE_ON_OFF_DASH); else m_gc->setLineProperties(1, GR_Graphics::JOIN_MITER, GR_Graphics::CAP_BUTT, GR_Graphics::LINE_SOLID); m_gc->setColor(m_pFormatFrame->borderColorLeft()); UT_sint32 iLeftThickness = UT_convertToLogicalUnits(m_pFormatFrame->getBorderThicknessLeft().utf8_str()); m_gc->setLineWidth(iLeftThickness); painter.drawLine(pageRect.left + border, pageRect.top + border, pageRect.left + border, pageRect.top + pageRect.height - border); } // top border if (m_pFormatFrame->getTopToggled()) { UT_sint32 linestyle = m_pFormatFrame->borderLineStyleTop(); if (linestyle == LS_DOTTED) m_gc->setLineProperties(1, GR_Graphics::JOIN_MITER, GR_Graphics::CAP_BUTT, GR_Graphics::LINE_DOTTED); else if (linestyle == LS_DASHED) m_gc->setLineProperties(1, GR_Graphics::JOIN_MITER, GR_Graphics::CAP_BUTT, GR_Graphics::LINE_ON_OFF_DASH); else m_gc->setLineProperties(1, GR_Graphics::JOIN_MITER, GR_Graphics::CAP_BUTT, GR_Graphics::LINE_SOLID); m_gc->setColor(m_pFormatFrame->borderColorTop()); UT_sint32 iTopThickness = UT_convertToLogicalUnits(m_pFormatFrame->getBorderThicknessTop().utf8_str()); m_gc->setLineWidth(iTopThickness); painter.drawLine(pageRect.left + border, pageRect.top + border, pageRect.left + pageRect.width - border, pageRect.top + border); } // bottom border if (m_pFormatFrame->getBottomToggled()) { UT_sint32 linestyle = m_pFormatFrame->borderLineStyleBottom(); if (linestyle == LS_DOTTED) m_gc->setLineProperties(1, GR_Graphics::JOIN_MITER, GR_Graphics::CAP_BUTT, GR_Graphics::LINE_DOTTED); else if (linestyle == LS_DASHED) m_gc->setLineProperties(1, GR_Graphics::JOIN_MITER, GR_Graphics::CAP_BUTT, GR_Graphics::LINE_ON_OFF_DASH); else m_gc->setLineProperties(1, GR_Graphics::JOIN_MITER, GR_Graphics::CAP_BUTT, GR_Graphics::LINE_SOLID); m_gc->setColor(m_pFormatFrame->borderColorBottom()); UT_sint32 iBottomThickness = UT_convertToLogicalUnits(m_pFormatFrame->getBorderThicknessBottom().utf8_str()); m_gc->setLineWidth(iBottomThickness); painter.drawLine(pageRect.left + border, pageRect.top + pageRect.height - border, pageRect.left + pageRect.width - border, pageRect.top + pageRect.height - border); } }
void AP_FormatTable_preview::draw(const UT_Rect *clip) { UT_UNUSED(clip); GR_Painter painter(m_gc); UT_sint32 iWidth = m_gc->tlu (getWindowWidth()); UT_sint32 iHeight = m_gc->tlu (getWindowHeight()); UT_Rect pageRect(m_gc->tlu(7), m_gc->tlu(7), iWidth - m_gc->tlu(14), iHeight - m_gc->tlu(14)); painter.fillRect(GR_Graphics::CLR3D_Background, 0, 0, iWidth, iHeight); painter.clearArea(pageRect.left, pageRect.top, pageRect.width, pageRect.height); UT_RGBColor tmpCol; UT_RGBColor black(0, 0, 0); m_gc->setLineWidth(m_gc->tlu(1)); int border = m_gc->tlu(20); int cornerLength = m_gc->tlu(5); // // Draw the cell background // const gchar * pszBGCol = NULL; if(m_pFormatTable->getImage()) { GR_Image * pImg = m_pFormatTable->getImage(); FG_Graphic * pFG = m_pFormatTable->getGraphic(); const char * szName = pFG->getDataId(); const UT_ByteBuf * pBB = pFG->getBuffer(); if(pFG->getType() == FGT_Raster) { pImg = static_cast<GR_Image *>( m_gc->createNewImage( szName, pBB, pFG->getMimeType(), pageRect.width - 2*border, pageRect.height - 2*border, GR_Image::GRT_Raster)); } else { pImg = static_cast<GR_Image *>( m_gc->createNewImage( szName, pBB, pFG->getMimeType(), pageRect.width - 2*border, pageRect.height - 2*border, GR_Image::GRT_Vector)); } UT_Rect rec(pageRect.left + border, pageRect.top + border, pageRect.width - 2*border, pageRect.height - 2*border); painter.drawImage(pImg,pageRect.left + border, pageRect.top + border); delete pImg; } else { m_pFormatTable->getPropVector().getProp(static_cast<const gchar *>("background-color"), pszBGCol); if (pszBGCol && *pszBGCol) { UT_parseColor(pszBGCol, tmpCol); painter.fillRect(tmpCol, pageRect.left + border, pageRect.top + border, pageRect.width - 2*border, pageRect.height - 2*border); } } // // Draw the cell corners // m_gc->setColor(UT_RGBColor(127,127,127)); // top left corner painter.drawLine(pageRect.left + border - cornerLength, pageRect.top + border, pageRect.left + border, pageRect.top + border); painter.drawLine(pageRect.left + border, pageRect.top + border - cornerLength, pageRect.left + border, pageRect.top + border); // top right corner painter.drawLine(pageRect.left + pageRect.width - border + cornerLength, pageRect.top + border, pageRect.left + pageRect.width - border, pageRect.top + border); painter.drawLine(pageRect.left + pageRect.width - border, pageRect.top + border - cornerLength, pageRect.left + pageRect.width - border, pageRect.top + border); // bottom left corner painter.drawLine(pageRect.left + border - cornerLength, pageRect.top + pageRect.height - border, pageRect.left + border, pageRect.top + pageRect.height - border); painter.drawLine(pageRect.left + border, pageRect.top + pageRect.height - border + cornerLength, pageRect.left + border, pageRect.top + pageRect.height - border); // bottom right corner painter.drawLine(pageRect.left + pageRect.width - border + cornerLength, pageRect.top + pageRect.height - border, pageRect.left + pageRect.width - border, pageRect.top + pageRect.height - border); painter.drawLine(pageRect.left + pageRect.width - border, pageRect.top + pageRect.height - border + cornerLength, pageRect.left + pageRect.width - border, pageRect.top + pageRect.height - border); // // Draw the cell borders // // top border if (m_pFormatTable->getTopToggled()) { const gchar * pszTopColor = NULL; m_pFormatTable->getPropVector().getProp("top-color", pszTopColor); if (pszTopColor) { UT_parseColor(pszTopColor, tmpCol); m_gc->setColor(tmpCol); } else m_gc->setColor(black); const gchar * pszTopThickness = NULL; m_pFormatTable->getPropVector().getProp("top-thickness", pszTopThickness); if(pszTopThickness) { UT_sint32 iTopThickness = UT_convertToLogicalUnits(pszTopThickness); m_gc->setLineWidth(iTopThickness); } else { m_gc->setLineWidth(m_gc->tlu(1)); } painter.drawLine(pageRect.left + border, pageRect.top + border, pageRect.left + pageRect.width - border, pageRect.top + border); } // left border if (m_pFormatTable->getLeftToggled()) { const gchar * pszLeftColor = NULL; m_pFormatTable->getPropVector().getProp("left-color", pszLeftColor); if (pszLeftColor) { UT_parseColor(pszLeftColor, tmpCol); m_gc->setColor(tmpCol); } else m_gc->setColor(black); const gchar * pszLeftThickness = NULL; m_pFormatTable->getPropVector().getProp("left-thickness", pszLeftThickness); if(pszLeftThickness) { UT_sint32 iLeftThickness = UT_convertToLogicalUnits(pszLeftThickness); m_gc->setLineWidth(iLeftThickness); } else { m_gc->setLineWidth(m_gc->tlu(1)); } painter.drawLine(pageRect.left + border, pageRect.top + border, pageRect.left + border, pageRect.top + pageRect.height - border); } // right border if (m_pFormatTable->getRightToggled()) { const gchar * pszRightColor = NULL; m_pFormatTable->getPropVector().getProp("right-color", pszRightColor); if (pszRightColor) { UT_parseColor(pszRightColor, tmpCol); m_gc->setColor(tmpCol); } else m_gc->setColor(black); const gchar * pszRightThickness = NULL; m_pFormatTable->getPropVector().getProp("right-thickness", pszRightThickness); if(pszRightThickness) { UT_sint32 iRightThickness = UT_convertToLogicalUnits(pszRightThickness); m_gc->setLineWidth(iRightThickness); } else { m_gc->setLineWidth(m_gc->tlu(1)); } painter.drawLine(pageRect.left + pageRect.width - border, pageRect.top + border, pageRect.left + pageRect.width - border, pageRect.top + pageRect.height - border); } // bottom border if (m_pFormatTable->getBottomToggled()) { const gchar * pszBottomColor = NULL; m_pFormatTable->getPropVector().getProp("bot-color", pszBottomColor); if (pszBottomColor) { UT_parseColor(pszBottomColor, tmpCol); m_gc->setColor(tmpCol); } else m_gc->setColor(black); const gchar * pszBotThickness = NULL; m_pFormatTable->getPropVector().getProp("bot-thickness", pszBotThickness); if(pszBotThickness) { UT_sint32 iBotThickness = UT_convertToLogicalUnits(pszBotThickness); m_gc->setLineWidth(iBotThickness); } else { m_gc->setLineWidth(m_gc->tlu(1)); } painter.drawLine(pageRect.left + border, pageRect.top + pageRect.height - border, pageRect.left + pageRect.width - border, pageRect.top + pageRect.height - border); } }