private void pDrawObjBox(
Graphics graph,
cReportAspect aspect,
float x1,
float y1,
float x2,
float y2,
bool filled,
int colorIn,
int colorOut)
{
// m_notBorder is used by preview and printing to indicate the controls must be print a border only
// when BorderType != NONE
//
if ((m_notBorder == false || filled) || (aspect.getBorderType() != csReportBorderType.CSRPTBSNONE))
{
if (aspect.getBorderType() == csReportBorderType.CSRPTBS3D)
{
printLine(graph, filled, x1, y1, x2, y2, colorIn, 0, false, (int)csColors.C_COLOR_WHITE, false);
// top
//
printLine(graph, false, x1, y1, x2, y1, (int)csColors.C_COLOR_WHITE, 1, false, aspect.getBorderColor3d(), false);
// down
//
printLine(graph, false, x1, y2 - 1, x2, y2 - 1, (int)csColors.C_COLOR_WHITE, 1, false, aspect.getBorderColor3dShadow(), false);
// left
//
printLine(graph, false, x1 + 1, y1, x1 + 1, y2, (int)csColors.C_COLOR_WHITE, 1, false, aspect.getBorderColor3d(), false);
// right
//
printLine(graph, false, x2 - 1, y1, x2 - 1, y2, (int)csColors.C_COLOR_WHITE, 1, false, aspect.getBorderColor3dShadow(), false);
}
else if (aspect.getBorderRounded())
{
printLine(graph, filled, x1, y1, x2, y2, colorIn, (int)aspect.getBorderWidth(), false, colorOut, true);
}
else
{
//
// we are in the editor window
//
// TODO: this is a bug. Then only way to get a border is setting BorderType to CSRPTBS3D or
// BorderRounded == TRUE
//
// when BorderType == CSRPTBSFIXED the border is not drawn
//
// we need to fix it but the fix will break all reports so first we need to update
// those reports to set the BorderType to CSRPTBSNONE
//
bool dash = false;
const int borderWidth = 1;
if (m_notBorder == false
&& (
(
aspect.getBorderType() == csReportBorderType.CSRPTBSFIXED
&& !aspect.getBorderRounded()
&& aspect.getBorderWidth() == 0
)
|| aspect.getBorderType() == csReportBorderType.CSRPTBSNONE
)
)
{
colorOut = Color.Gray.ToArgb(); // 0xff9966; //Color.LightGray.ToArgb();
dash = true;
}
// TODO: clean this. we have many issues with this code. the value 16777215 is white
// it is used in cairo reports. when a control has a background (colorIn) == white
// we must not call printLine
//
if (!m_notBorder
|| (filled && colorIn != 16777215) // this is the value of white controls in cairo reports.
|| (aspect.getBorderType() == csReportBorderType.CSRPTBSFIXED && aspect.getBorderWidth() > 0))
{
printLine(graph, filled, x1, y1, x2, y2, colorIn, borderWidth, dash, colorOut, false);
}
}
}
}