| /******************************************************************************* * Copyright (c) Emil Crumhorn - Hexapixel.com - emil.crumhorn@gmail.com * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * emil.crumhorn@gmail.com - initial API and implementation *******************************************************************************/
package com.hexapixel.widgets.ribbon;
import java.util.List;
import org.eclipse.swt.SWT; import org.eclipse.swt.graphics.Color; import org.eclipse.swt.graphics.GC; import org.eclipse.swt.graphics.Image; import org.eclipse.swt.graphics.Rectangle;
import com.hexapixel.widgets.generic.ColorCache;
/** * Draws a Toolbar button in one of the following states: * * - Hover (light) * - Selected (darker) * - Selected and Hover (darkest) * * This is very down to the pixel level and not very simply done, each mode has different highlighted pixels as well so it's * not just a matter of darkening or lightening a certain color. * * @author Emil Crumhorn * */ public abstract class AbstractButtonPainter {
private static int TOP_SPACING = 2;
// SPLIT BUTTON (Mostly same colors as others, but fills and divider change) private Color mInnerTopPartTopTopSplit = ColorCache.getInstance().getColor(255, 254, 243); private Color mInnerTopPartTopBottomSplit = ColorCache.getInstance().getColor(255, 247, 217); private Color mInnerTopPartTopBottomTopSplit = ColorCache.getInstance().getColor(255, 241, 194); private Color mInnerTopPartTopBottomBottomSplit = ColorCache.getInstance().getColor(255, 240, 195); private Color mInnerTopPartTopTopSplit_Hover = ColorCache.getInstance().getColor(255, 253, 219); private Color mInnerTopPartTopBottomSplit_Hover = ColorCache.getInstance().getColor(255, 231, 144); private Color mInnerTopPartTopBottomTopSplit_Hover = ColorCache.getInstance().getColor(255, 215, 76); private Color mInnerTopPartTopBottomBottomSplit_Hover = ColorCache.getInstance().getColor(255, 211, 70);
private Color mInnerBottomPartTopSplit = ColorCache.getInstance().getColor(255, 239, 199); private Color mInnerBottomPartBottomSplit = ColorCache.getInstance().getColor(255, 247, 223); private Color mInnerBottomPartTopSplit_Hover = ColorCache.getInstance().getColor(255, 212, 83); private Color mInnerBottomPartBottomSplit_Hover = ColorCache.getInstance().getColor(255, 234, 168); private Color mInnerBottomPartTopSplit_Selected = ColorCache.getInstance().getColor(249, 170, 78); private Color mInnerBottomPartBottomSplit_Selected = ColorCache.getInstance().getColor(252, 231, 160);
private Color mInnerSplitDividerLeft = ColorCache.getInstance().getColor(219, 195, 116); private Color mInnerSplitDividerMid = ColorCache.getInstance().getColor(206, 190, 134);
private Color mInnerSplitSmallDividerTop = ColorCache.getInstance().getColor(226, 214, 189); private Color mInnerSplitSmallDividerMid = ColorCache.getInstance().getColor(205, 181, 131);
// SPLIT SMALL private Color mInnerTopPartTopTopSplitSmall = ColorCache.getInstance().getColor(255, 255, 251); private Color mInnerTopPartTopBottomSplitSmall = ColorCache.getInstance().getColor(255, 248, 224); private Color mInnerTopPartTopBottomTopSplitSmall = ColorCache.getInstance().getColor(255, 252, 192); private Color mInnerTopPartTopBottomBottomSplitSmall = ColorCache.getInstance().getColor(255, 251, 214);
/* private Color mInnerBottomTopSplit = ColorCache.getInstance().getColor(255, 254, 243); private Color mInnerBottomBottomSplit = ColorCache.getInstance().getColor(255, 254, 243); private Color mInnerBottomTopSplit_Hover = ColorCache.getInstance().getColor(255, 254, 243); private Color mInnerBottomBottomSplit_Hover = ColorCache.getInstance().getColor(255, 254, 243); */ // HOVER COLORS private Color mBorderTop_Hover = ColorCache.getInstance().getColor(221, 207, 155); private Color mBorderSideTopTop_Hover = ColorCache.getInstance().getColor(220, 206, 154); private Color mBorderSideTopBottom_Hover = ColorCache.getInstance().getColor(197, 174, 125); // 24 px high total private Color mBorderSideMidTop_Hover = ColorCache.getInstance().getColor(196, 173, 124); private Color mBorderSideMidBottom_Hover = ColorCache.getInstance().getColor(198, 178, 131); // 27 px high total private Color mBorderSideBottomTop_Hover = ColorCache.getInstance().getColor(198, 180, 135); private Color mBorderSideBottomBottom_Hover = ColorCache.getInstance().getColor(211, 206, 185); // 13 px high total private Color mBorderBottom_Hover = ColorCache.getInstance().getColor(211, 207, 188); private Color mCornerFadeTopPixel_Hover = ColorCache.getInstance().getColor(234, 226, 168); private Color mCornerFadeBottomPixel_Hover = ColorCache.getInstance().getColor(235, 225, 189); private Color mBorderInnerTop_Hover = ColorCache.getInstance().getColor(255, 255, 247); private Color mBorderInnerSideTopTop_Hover = ColorCache.getInstance().getColor(255, 255, 247); private Color mBorderInnerSideTopBottom_Hover = ColorCache.getInstance().getColor(255, 248, 223); // 23 px high total private Color mBorderInnerSideMidTop_Hover = ColorCache.getInstance().getColor(255, 243, 206); private Color mBorderInnerSideMidBottom_Hover = ColorCache.getInstance().getColor(255, 243, 173); // 27 px high total private Color mBorderInnerSideBottomTop_Hover = ColorCache.getInstance().getColor(255, 243, 170); private Color mBorderInnerSideBottomBottom_Hover = ColorCache.getInstance().getColor(255, 243, 93); // 12 px high total private Color mBorderInnerBottomCorner_Hover = ColorCache.getInstance().getColor(255, 247, 146); private Color mBorderInnerBottomMidway_Hover = ColorCache.getInstance().getColor(255, 254, 247); private Color mInnerTop_Hover = ColorCache.getInstance().getColor(255, 253, 220); private Color mInnerTopBottom_Hover = ColorCache.getInstance().getColor(255, 231, 143); private Color mInnerBottomTop_Hover = ColorCache.getInstance().getColor(255, 215, 92); private Color mInnerBottomBottom_Hover = ColorCache.getInstance().getColor(255, 233, 164); // TEXT COLOR private Color mButtonTextColor = ColorCache.getInstance().getColor(21, 66, 139); // SELECTED COLORS private Color mBorderTop_Selected = ColorCache.getInstance().getColor(142, 129, 101); private Color mBorderSideTopTop_Selected = ColorCache.getInstance().getColor(142, 129, 101); private Color mBorderSideTopBottom_Selected = ColorCache.getInstance().getColor(142, 129, 101); // 24 px high total private Color mBorderSideMidTop_Selected = ColorCache.getInstance().getColor(142, 129, 101); private Color mBorderSideMidBottom_Selected = ColorCache.getInstance().getColor(166, 155, 133); // 27 px high total private Color mBorderSideBottomTop_Selected = ColorCache.getInstance().getColor(168, 158, 136); private Color mBorderSideBottomBottom_Selected = ColorCache.getInstance().getColor(198, 192, 178); // 11 px high total private Color mCornerFadeTopPixel_Selected = ColorCache.getInstance().getColor(181, 167, 145); private Color mCornerFadeBottomPixel_Selected = ColorCache.getInstance().getColor(247, 229, 168); private Color mCornerFadeBottomInsidePixel_Selected = ColorCache.getInstance().getColor(254, 216, 93); private Color mBorderInnerSideTopTop_Selected = ColorCache.getInstance().getColor(243, 186, 95); private Color mBorderInnerSideTopBottom_Selected = ColorCache.getInstance().getColor(250, 195, 93); // 23 px high total private Color mBorderInnerSideMidTop_Selected = ColorCache.getInstance().getColor(248, 190, 81); private Color mBorderInnerSideMidBottom_Selected = ColorCache.getInstance().getColor(253, 208, 73); // 27 px high total private Color mBorderInnerSideBottomTop_Selected = ColorCache.getInstance().getColor(253, 208, 70); private Color mBorderInnerSideBottomBottom_Selected = ColorCache.getInstance().getColor(255, 208, 49); // 11 px high total private Color mBorderInnerBottomCorner_Selected = ColorCache.getInstance().getColor(255, 207, 45); private Color mBorderInnerBottomMidway_Selected = ColorCache.getInstance().getColor(255, 233, 160); private Color mBorderTopInner_Selected = ColorCache.getInstance().getColor(182, 154, 120); private Color mBorderTopInnerTwo_Selected = ColorCache.getInstance().getColor(224, 182, 136); private Color mBorderTopInnerThree_Selected = ColorCache.getInstance().getColor(245, 201, 154);
private Color mInnerTop_Selected = ColorCache.getInstance().getColor(253, 212, 168); private Color mInnerTopBottom_Selected = ColorCache.getInstance().getColor(251, 173, 95); private Color mInnerMidTop_Selected = ColorCache.getInstance().getColor(249, 148, 46); private Color mInnerMidBottom_Selected = ColorCache.getInstance().getColor(252, 226, 147); private Color mInnerBottomTop_Selected = ColorCache.getInstance().getColor(252, 230, 154); private Color mInnerBottomBottom_Selected = ColorCache.getInstance().getColor(253, 241, 176);
// SELECTED AND HOVER private Color mBorderTop_SelectedHover = ColorCache.getInstance().getColor(142, 129, 101); private Color mBorderSideTopTop_SelectedHover = ColorCache.getInstance().getColor(142, 129, 101); private Color mBorderSideTopBottom_SelectedHover = ColorCache.getInstance().getColor(142, 129, 101); // 24 px high total private Color mBorderSideMidTop_SelectedHover = ColorCache.getInstance().getColor(142, 129, 101); private Color mBorderSideMidBottom_SelectedHover = ColorCache.getInstance().getColor(166, 155, 133); // 27 px high total private Color mBorderSideBottomTop_SelectedHover = ColorCache.getInstance().getColor(168, 158, 136); private Color mBorderSideBottomBottom_SelectedHover = ColorCache.getInstance().getColor(198, 192, 178); // 11 px high total private Color mCornerFadeTopPixel_SelectedHover = ColorCache.getInstance().getColor(151, 137, 109); private Color mCornerFadeBottomPixel_SelectedHover = ColorCache.getInstance().getColor(204, 190, 165); private Color mCornerFadeBottomPixelCenter_SelectedHover = ColorCache.getInstance().getColor(225, 194, 113); private Color mBorderInnerSideTopTop_SelectedHover = ColorCache.getInstance().getColor(225, 153, 47); private Color mBorderInnerSideTopBottom_SelectedHover = ColorCache.getInstance().getColor(253, 226, 178); // 23 px high total private Color mBorderInnerSideMidTop_SelectedHover = ColorCache.getInstance().getColor(252, 226, 181); private Color mBorderInnerSideMidBottom_SelectedHover = ColorCache.getInstance().getColor(254, 229, 160); // 27 px high total private Color mBorderInnerSideBottomTop_SelectedHover = ColorCache.getInstance().getColor(254, 228, 155); private Color mBorderInnerSideBottomBottom_SelectedHover = ColorCache.getInstance().getColor(255, 223, 113); // 11 px high total private Color mBorderBottom_SelectedHover = ColorCache.getInstance().getColor(212, 197, 173); private Color mBorderInnerBottomCorner_SelectedHover = ColorCache.getInstance().getColor(255, 207, 44); private Color mBorderInnerBottomMidway_SelectedHover = ColorCache.getInstance().getColor(255, 233, 160); private Color mBorderTopInner_SelectedHover = ColorCache.getInstance().getColor(168, 136, 94); private Color mBorderTopInnerTwo_SelectedHover = ColorCache.getInstance().getColor(209, 155, 101); private Color mBorderTopInnerThree_SelectedHover = ColorCache.getInstance().getColor(233, 169, 107);
private Color mInnerTop_SelectedHover = ColorCache.getInstance().getColor(233, 169, 107); private Color mInnerTopBottom_SelectedHover = ColorCache.getInstance().getColor(227, 139, 78); private Color mInnerMidTop_SelectedHover = ColorCache.getInstance().getColor(229, 130, 50); private Color mInnerMidBottom_SelectedHover = ColorCache.getInstance().getColor(252, 203, 96); private Color mInnerBottomTop_SelectedHover = ColorCache.getInstance().getColor(249, 197, 94); private Color mInnerBottomBottom_SelectedHover = ColorCache.getInstance().getColor(252, 207, 100); // SMALL BUTTONS // HOVER private Color mSideTopTopSmall_Hover = ColorCache.getInstance().getColor(216, 202, 150); private Color mSideTopBottomSmall_Hover = ColorCache.getInstance().getColor(185, 160, 116); private Color mSideBottomTopSmall_Hover = ColorCache.getInstance().getColor(183, 158, 115); private Color mSideBottomBottomSmall_Hover = ColorCache.getInstance().getColor(184, 169, 142); private Color mBottomSmallMid_Hover = ColorCache.getInstance().getColor(203, 196, 170); private Color mBorderSmallSideBottomTop_Hover = ColorCache.getInstance().getColor(255, 242, 201); private Color mBorderSmallSideBottomBottom_Hover = ColorCache.getInstance().getColor(255, 246, 185); private Color mBorderSmallInsidePixelTop_Hover = ColorCache.getInstance().getColor(233, 223, 159); private Color mBorderSmallInsidePixelBottom_Hover = ColorCache.getInstance().getColor(233, 219, 177); // SELECTED private Color mSmallTop_Selected = ColorCache.getInstance().getColor(167, 142, 102); private Color mSmallTopInner_Selected = ColorCache.getInstance().getColor(203, 180, 153); private Color mSmallTopInnerTwo_Selected = ColorCache.getInstance().getColor(234, 209, 178); private Color mSmallLeftSide_Selected = ColorCache.getInstance().getColor(158, 130, 85); private Color mSmallRightSide_Selected = mSmallTop_Selected; private Color mBottomSmallMid_Selected = ColorCache.getInstance().getColor(204, 197, 172);
private Color mSmallFillTopTop_Selected = ColorCache.getInstance().getColor(248, 218, 183); private Color mSmallFillTopBottom_Selected = ColorCache.getInstance().getColor(254, 211, 139); private Color mSmallFillBottomTop_Selected = ColorCache.getInstance().getColor(253, 194, 92); private Color mSmallFillBottomBottom_Selected = ColorCache.getInstance().getColor(253, 234, 156); private Color mSideBottomBottomSmall_Selected = ColorCache.getInstance().getColor(184, 169, 142); private Color mBorderSmallSideTopTop_Selected = ColorCache.getInstance().getColor(239, 211, 176); private Color mBorderSmallSideTopBottom_Selected = ColorCache.getInstance().getColor(241, 178, 90); private Color mBorderSmallSideBottomTop_Selected = ColorCache.getInstance().getColor(239, 172, 72); private Color mBorderSmallSideBottomBottom_Selected = ColorCache.getInstance().getColor(230, 177, 82); private Color mBorderSmallInsidePixelTop_Selected = ColorCache.getInstance().getColor(178, 154, 120); private Color mBorderSmallInsidePixelBottom_Selected = ColorCache.getInstance().getColor(200, 163, 104);
// SELECTED AND HOVER private Color mSmallTop_SelectedHover = ColorCache.getInstance().getColor(158, 130, 85); private Color mSmallTopInner_SelectedHover = ColorCache.getInstance().getColor(189, 140, 70); private Color mSmallTopInnerTwo_SelectedHover = ColorCache.getInstance().getColor(222, 164, 87); private Color mSmallLeftSide_SelectedHover = mSmallTop_SelectedHover; private Color mSmallRightSide_SelectedHover = mSmallTop_SelectedHover; private Color mBottomSmallMid_SelectedHover = ColorCache.getInstance().getColor(204, 197, 172);
private Color mBottomSmallInnerSide_SelectedHover = ColorCache.getInstance().getColor(255, 173 |