private static DoubleBorderInfo calcDoubleBorderInfo(int width) { DoubleBorderInfo result = new DoubleBorderInfo(); if (width == 1) { result.setOuter(1); } else if (width == 2) { result.setOuter(1); result.setInner(1); } else { int extra = width % 3; switch (extra) { case 0: result.setOuter(width / 3); result.setCenter(width / 3); result.setInner(width / 3); break; case 1: result.setOuter((width + 2) / 3 - 1); result.setCenter((width + 2) / 3); result.setInner((width + 2) / 3 - 1); break; case 2: result.setOuter((width + 1) / 3); result.setCenter((width + 1) / 3 - 1); result.setInner((width + 1) / 3); break; } } return result; }
private static void paintDoubleBorder( OutputDevice outputDevice, BorderPropertySet border, Rectangle bounds, int sides, int currentSide, boolean bevel) { DoubleBorderInfo topBorderInfo = calcDoubleBorderInfo((int)border.top()); DoubleBorderInfo rightBorderInfo = calcDoubleBorderInfo((int)border.right()); DoubleBorderInfo bottomBorderInfo = calcDoubleBorderInfo((int)border.bottom()); DoubleBorderInfo leftBorderInfo = calcDoubleBorderInfo((int)border.left()); BorderPropertySet outer = new BorderPropertySet( topBorderInfo.getOuter(), rightBorderInfo.getOuter(), bottomBorderInfo.getOuter(), leftBorderInfo.getOuter()); BorderPropertySet center = new BorderPropertySet( topBorderInfo.getCenter(), rightBorderInfo.getCenter(), bottomBorderInfo.getCenter(), leftBorderInfo.getCenter()); BorderPropertySet inner = new BorderPropertySet( topBorderInfo.getInner(), rightBorderInfo.getInner(), bottomBorderInfo.getInner(), leftBorderInfo.getInner()); Rectangle b2 = shrinkRect(bounds, outer, bevel ? sides : currentSide); b2 = shrinkRect(b2, center, bevel ? sides : currentSide); // draw outer border paintSolid(outputDevice, bounds, outer, border, sides, currentSide, bevel); // draw inner border paintSolid(outputDevice, b2, inner, border, sides, currentSide, bevel); }
private static DoubleBorderInfo calcDoubleBorderInfo(int width) { DoubleBorderInfo result = new DoubleBorderInfo(); if (width == 1) { result.setOuter(1); } else if (width == 2) { result.setOuter(1); result.setInner(1); } else { int extra = width % 3; switch (extra) { case 0: result.setOuter(width / 3); result.setCenter(width / 3); result.setInner(width / 3); break; case 1: result.setOuter((width + 2) / 3 - 1); result.setCenter((width + 2) / 3); result.setInner((width + 2) / 3 - 1); break; case 2: result.setOuter((width + 1) / 3); result.setCenter((width + 1) / 3 - 1); result.setInner((width + 1) / 3); break; } } return result; }
private static void paintDoubleBorder( OutputDevice outputDevice, BorderPropertySet border, Rectangle bounds, int sides, int currentSide, boolean bevel) { DoubleBorderInfo topBorderInfo = calcDoubleBorderInfo((int)border.top()); DoubleBorderInfo rightBorderInfo = calcDoubleBorderInfo((int)border.right()); DoubleBorderInfo bottomBorderInfo = calcDoubleBorderInfo((int)border.bottom()); DoubleBorderInfo leftBorderInfo = calcDoubleBorderInfo((int)border.left()); BorderPropertySet outer = new BorderPropertySet( topBorderInfo.getOuter(), rightBorderInfo.getOuter(), bottomBorderInfo.getOuter(), leftBorderInfo.getOuter()); BorderPropertySet center = new BorderPropertySet( topBorderInfo.getCenter(), rightBorderInfo.getCenter(), bottomBorderInfo.getCenter(), leftBorderInfo.getCenter()); BorderPropertySet inner = new BorderPropertySet( topBorderInfo.getInner(), rightBorderInfo.getInner(), bottomBorderInfo.getInner(), leftBorderInfo.getInner()); Rectangle b2 = shrinkRect(bounds, outer, bevel ? sides : currentSide); b2 = shrinkRect(b2, center, bevel ? sides : currentSide); // draw outer border paintSolid(outputDevice, bounds, outer, border, sides, currentSide, bevel); // draw inner border paintSolid(outputDevice, b2, inner, border, sides, currentSide, bevel); }