void DefaultWebThemeEngine::paintInnerSpinButton(Canvas* canvas, State state, const Rect& rect, const InnerSpinButtonExtraParams& param) const { double rectHalfHeight = rect.height / 2; cairo_save(canvas); setupBorder(canvas, state); cairo_rectangle(canvas, rect.x + 0.5, rect.y + 1.5, rect.width, rectHalfHeight); cairo_stroke_preserve(canvas); gradientFill(canvas, rect.y, rectHalfHeight, state == StatePressed && param.spinUp); setupBorder(canvas, state); cairo_rectangle(canvas, rect.x + 0.5, rect.y + 0.5 + rectHalfHeight, rect.width, rectHalfHeight); cairo_stroke_preserve(canvas); gradientFill(canvas, rect.y + rectHalfHeight, rectHalfHeight, state == StatePressed && !param.spinUp); cairo_move_to(canvas, rect.x + rect.width - InnerSpinButtonArrowSize - InnerSpinButtonBorder * 2, rect.y + rectHalfHeight + rect.height / 4 - InnerSpinButtonArrowSize + 1.5); cairo_set_source_rgb(canvas, CheckColor, CheckColor, CheckColor); cairo_rel_line_to(canvas, MenuListArrowSize, 0); cairo_rel_line_to(canvas, -MenuListArrowSize / 2, MenuListArrowSize); cairo_close_path(canvas); cairo_move_to(canvas, rect.x + rect.width - InnerSpinButtonArrowSize - InnerSpinButtonBorder * 2, rect.y + rect.height / 4 + InnerSpinButtonArrowSize); cairo_set_source_rgb(canvas, CheckColor, CheckColor, CheckColor); cairo_rel_line_to(canvas, MenuListArrowSize, 0); cairo_rel_line_to(canvas, -MenuListArrowSize / 2, -MenuListArrowSize); cairo_close_path(canvas); cairo_fill(canvas); }
void DefaultWebThemeEngine::paintInnerSpinButton(WebCanvas* canvas, State state, const WebRect& rect, const InnerSpinButtonExtraParams& param) const { double rectHalfHeight = rect.height / 2; cairo_save(canvas); setupBorder(canvas, state); cairo_rectangle(canvas, rect.x + 0.5, rect.y + 1.5, rect.width, rectHalfHeight); cairo_stroke_preserve(canvas); gradientFill(canvas, rect.y, rectHalfHeight, state == StatePressed && param.spinUp); setupBorder(canvas, state); cairo_rectangle(canvas, rect.x + 0.5, rect.y + 0.5 + rectHalfHeight, rect.width, rectHalfHeight); cairo_stroke_preserve(canvas); gradientFill(canvas, rect.y + rectHalfHeight, rectHalfHeight, state == StatePressed && !param.spinUp); cairo_move_to(canvas, rect.x + rect.width - INNERSPINBUTTON_ARROW_SIZE - INNERSPINBUTTON_BORDER * 2, rect.y + rectHalfHeight + rect.height/4 - INNERSPINBUTTON_ARROW_SIZE + 1.5); cairo_set_source_rgb(canvas, CHECK_COLOR, CHECK_COLOR, CHECK_COLOR); cairo_rel_line_to(canvas, MENULIST_ARROW_SIZE, 0); cairo_rel_line_to(canvas, -MENULIST_ARROW_SIZE / 2, MENULIST_ARROW_SIZE); cairo_close_path(canvas); cairo_move_to(canvas, rect.x + rect.width - INNERSPINBUTTON_ARROW_SIZE - INNERSPINBUTTON_BORDER * 2, rect.y + rect.height/4 + INNERSPINBUTTON_ARROW_SIZE); cairo_set_source_rgb(canvas, CHECK_COLOR, CHECK_COLOR, CHECK_COLOR); cairo_rel_line_to(canvas, MENULIST_ARROW_SIZE, 0); cairo_rel_line_to(canvas, -MENULIST_ARROW_SIZE / 2, -MENULIST_ARROW_SIZE); cairo_close_path(canvas); cairo_fill(canvas); cairo_restore(canvas); }
void DefaultWebThemeEngine::paintSliderTrack(Canvas* canvas, State, const Rect& rect) const { cairo_save(canvas); cairo_rectangle(canvas, rect.x, rect.y + (rect.height - SliderTrackHeight) / 2.0, rect.width, SliderTrackHeight); gradientFill(canvas, rect.y, rect.height, true); cairo_restore(canvas); }
animation filler::bfs::fillGradient( PNG & img, int x, int y, RGBAPixel fadeColor1, RGBAPixel fadeColor2, int radius, int tolerance, int frameFreq ) { gradientColorPicker gradientFill(fadeColor1, fadeColor2, radius, x, y); return filler::fill<Queue>(img, x, y, gradientFill, tolerance, frameFreq); }
void DefaultWebThemeEngine::paintSliderThumb(Canvas* canvas, State state, const Rect& rect) const { cairo_save(canvas); setupBorder(canvas, state); cairo_rectangle(canvas, rect.x, rect.y, rect.width, rect.height); cairo_stroke_preserve(canvas); gradientFill(canvas, rect.y, rect.height, state == StatePressed); cairo_restore(canvas); }
void DefaultWebThemeEngine::paintProgressBar(Canvas* canvas, State state, const Rect& rect, const ProgressBarExtraParams& params) const { cairo_save(canvas); if (params.isDeterminate) { // Background setupBorder(canvas, state); cairo_rectangle(canvas, rect.x, rect.y, rect.width, rect.height); cairo_fill(canvas); // Progress cairo_rectangle(canvas, rect.x, rect.y, rect.width * params.position, rect.height); gradientFill(canvas, rect.y, rect.height); } else { cairo_rectangle(canvas, rect.x, rect.y, rect.width, rect.height); gradientFill(canvas, rect.y, rect.height, true); } cairo_restore(canvas); }
void DefaultWebThemeEngine::paintButton(Canvas* canvas, State state, const Rect& rect, const ButtonExtraParams&) const { cairo_save(canvas); setupBorder(canvas, state); // Cairo uses a coordinate system not based on pixel coordinates, so // we need to add 0.5 to x and y coord or the line will stay between // two pixels instead of in the middle of a pixel. cairo_rectangle(canvas, rect.x + 0.5, rect.y + 0.5, rect.width, rect.height); cairo_stroke_preserve(canvas); gradientFill(canvas, rect.y, rect.height, state == StatePressed); cairo_restore(canvas); }
void DefaultWebThemeEngine::paintMeter(Canvas* canvas, State state, const Rect& rect, const MeterExtraParams& params) const { cairo_save(canvas); // Background setupBorder(canvas, state); cairo_rectangle(canvas, rect.x, rect.y, rect.width, rect.height); cairo_fill(canvas); // Meter cairo_rectangle(canvas, rect.x, rect.y, rect.width * params.valueRatio(), rect.height); gradientFill(canvas, rect.y, rect.height); cairo_restore(canvas); }
void DefaultWebThemeEngine::paintRadio(Canvas* canvas, State state, const Rect& rect, const ButtonExtraParams& param) const { cairo_save(canvas); setupBorder(canvas, state); cairo_arc(canvas, rect.x + rect.width / 2.0, rect.y + rect.height / 2.0, rect.width / 2.0, 0, 2 * M_PI); cairo_stroke_preserve(canvas); gradientFill(canvas, rect.y, rect.height); if (param.checked) { cairo_set_source_rgb(canvas, CheckColor, CheckColor, CheckColor); cairo_arc(canvas, rect.x + rect.width / 2.0, rect.y + rect.height / 2.0, rect.width / 4.0, 0, 2 * M_PI); cairo_fill(canvas); } cairo_restore(canvas); }
void DefaultWebThemeEngine::paintMenuList(Canvas* canvas, State state, const Rect& rect) const { cairo_save(canvas); setupBorder(canvas, state); cairo_rectangle(canvas, rect.x + 0.5, rect.y + 0.5, rect.width, rect.height); cairo_stroke_preserve(canvas); gradientFill(canvas, rect.y, rect.height, state == StatePressed); cairo_move_to(canvas, rect.x + rect.width - MenuListArrowSize - MenuListBorder, rect.y + 1 + rect.height / 2 - MenuListArrowSize / 2); cairo_set_source_rgb(canvas, CheckColor, CheckColor, CheckColor); cairo_rel_line_to(canvas, MenuListArrowSize, 0); cairo_rel_line_to(canvas, -MenuListArrowSize / 2, MenuListArrowSize); cairo_close_path(canvas); cairo_fill(canvas); cairo_restore(canvas); }
void DefaultWebThemeEngine::paintMenuList(WebCanvas* canvas, State state, const WebRect& rect) const { cairo_save(canvas); setupBorder(canvas, state); cairo_rectangle(canvas, rect.x + 0.5, rect.y + 0.5, rect.width, rect.height); cairo_stroke_preserve(canvas); gradientFill(canvas, rect.y, rect.height, state == StatePressed); cairo_move_to(canvas, rect.x + rect.width - MENULIST_ARROW_SIZE - MENULIST_BORDER, rect.y + 1 + rect.height/2 - MENULIST_ARROW_SIZE/2); cairo_set_source_rgb(canvas, CHECK_COLOR, CHECK_COLOR, CHECK_COLOR); cairo_rel_line_to(canvas, MENULIST_ARROW_SIZE, 0); cairo_rel_line_to(canvas, -MENULIST_ARROW_SIZE/2, MENULIST_ARROW_SIZE); cairo_close_path(canvas); cairo_fill(canvas); cairo_restore(canvas); }
void DefaultWebThemeEngine::paintCheckbox(Canvas* canvas, State state, const Rect& rect, const ButtonExtraParams& param) const { cairo_save(canvas); setupBorder(canvas, state); cairo_rectangle(canvas, rect.x + 0.5, rect.y + 0.5, rect.width, rect.height); cairo_stroke_preserve(canvas); gradientFill(canvas, rect.y, rect.height, state == StatePressed); if (param.checked) { const double border = 3; cairo_set_line_width(canvas, 2); cairo_set_source_rgb(canvas, CheckColor, CheckColor, CheckColor); cairo_move_to(canvas, rect.x + 0.5 + border, rect.y + 0.5 + rect.height - border); cairo_rel_line_to(canvas, rect.width - border * 2, -rect.height + border * 2); cairo_move_to(canvas, rect.x + 0.5 + border, rect.y + 0.5 + border); cairo_rel_line_to(canvas, rect.width - border * 2, rect.height - border * 2); cairo_stroke(canvas); } cairo_restore(canvas); }
static void create_pixmaps() { if(pixmaps_created) return; pixmaps_created = true; titleHeight = QFontMetrics(options()->font(true)).height(); if (titleHeight < handleSize) titleHeight = handleSize; titleHeight &= ~1; // Make title height even if (titleHeight < 14) titleHeight = 14; btnWidth1 = titleHeight + 3; btnWidth2 = 3*titleHeight/2 + 6; // titlebar QPainter p; QPainter maskPainter; int i, x, y; titlePix = new QPixmap(33, 12); titlePix->fill( Qt::transparent ); QBitmap mask(33, 12); mask.fill(Qt::color0); p.begin(titlePix); maskPainter.begin(&mask); maskPainter.setPen(Qt::color1); for(i=0, y=2; i < 3; ++i, y+=4){ for(x=1; x <= 33; x+=3){ p.setPen(options()->color(KDecoration::ColorTitleBar, true).light(150)); p.drawPoint(x, y); maskPainter.drawPoint(x, y); p.setPen(options()->color(KDecoration::ColorTitleBar, true).dark(150)); p.drawPoint(x+1, y+1); maskPainter.drawPoint(x+1, y+1); } } p.end(); maskPainter.end(); titlePix->setMask(mask); if(QPixmap::defaultDepth() > 8){ aUpperGradient = new QPixmap(32, titleHeight+2); iUpperGradient = new QPixmap(32, titleHeight+2); QColor bgColor = options()->color(KDecoration::ColorTitleBar, true); gradientFill(aUpperGradient, bgColor.light(120), bgColor.dark(120)); bgColor = options()->color(KDecoration::ColorTitleBar, false); gradientFill(iUpperGradient, bgColor.light(120), bgColor.dark(120)); } // buttons (active/inactive, sunken/unsunken, 2 sizes each) QPalette g = options()->palette(KDecoration::ColorButtonBg, true); g.setCurrentColorGroup( QPalette::Active ); QColor c = g.color( QPalette::Background ); btnPix1 = new QPixmap(btnWidth1, titleHeight); btnDownPix1 = new QPixmap(btnWidth1, titleHeight); btnPix2 = new QPixmap(btnWidth2, titleHeight); btnDownPix2 = new QPixmap(btnWidth2, titleHeight); iBtnPix1 = new QPixmap(btnWidth1, titleHeight); iBtnDownPix1 = new QPixmap(btnWidth1, titleHeight); iBtnPix2 = new QPixmap(btnWidth2, titleHeight); iBtnDownPix2 = new QPixmap(btnWidth2, titleHeight); if(QPixmap::defaultDepth() > 8){ gradientFill(btnPix1, c.light(120), c.dark(130), true); gradientFill(btnPix2, c.light(120), c.dark(130), true); gradientFill(btnDownPix1, c.light(120), c.dark(130), true); gradientFill(btnDownPix2, c.light(120), c.dark(130), true); g = options()->palette(KDecoration::ColorButtonBg, false); g.setCurrentColorGroup( QPalette::Active ); c = g.color(QPalette::Background); gradientFill(iBtnPix1, c.light(120), c.dark(130), true); gradientFill(iBtnPix2, c.light(120), c.dark(130), true); gradientFill(iBtnDownPix1, c.light(120), c.dark(130), true); gradientFill(iBtnDownPix2, c.light(120), c.dark(130), true); } else{ btnPix1->fill(c.rgb()); btnDownPix1->fill(c.rgb()); btnPix2->fill(c.rgb()); btnDownPix2->fill(c.rgb()); g = options()->palette(KDecoration::ColorButtonBg, false); g.setCurrentColorGroup( QPalette::Active ); c = g.background().color(); iBtnPix1->fill(c.rgb()); iBtnDownPix1->fill(c.rgb()); iBtnPix2->fill(c.rgb()); iBtnDownPix2->fill(c.rgb()); } g = options()->palette(KDecoration::ColorButtonBg, true); g.setCurrentColorGroup( QPalette::Active ); c = g.background().color(); drawButtonFrame(btnPix1, g, false); drawButtonFrame(btnDownPix1, g, true); drawButtonFrame(btnPix2, g, false); drawButtonFrame(btnDownPix2, g, true); g = options()->palette(KDecoration::ColorButtonBg, false); g.setCurrentColorGroup( QPalette::Active ); c = g.background().color(); drawButtonFrame(iBtnPix1, g, false); drawButtonFrame(iBtnDownPix1, g, true); drawButtonFrame(iBtnPix2, g, false); drawButtonFrame(iBtnDownPix2, g, true); if(qGray(options()->color(KDecoration::ColorButtonBg, true).rgb()) > 128) btnForeground = Qt::black; else btnForeground = Qt::white; }