void FalagardProgressBarEx::render() { const StateImagery* imagery; // get WidgetLookFeel for the assigned look. const WidgetLookFeel& wlf = getLookNFeel(); // try and get imagery for our current state imagery = &wlf.getStateImagery(d_window->isDisabled() ? "Disabled" : "Enabled"); // peform the rendering operation. imagery->render(*d_window); // get imagery for actual progress rendering imagery = &wlf.getStateImagery(d_window->isDisabled() ? "DisabledProgress" : "EnabledProgress"); // get target rect for this imagery Rect progressRect(wlf.getNamedArea("ProgressArea").getArea().getPixelRect(*d_window)); // calculate a clipper according to the current progress. Rect progressClipper(progressRect); ProgressBar* w = (ProgressBar*)d_window; if (d_vertical) { float height = PixelAligned(progressClipper.getHeight() * w->getProgress()); if (d_reversed) { progressClipper.setHeight(height); } else { progressClipper.d_top = progressClipper.d_bottom - height; } } else { float width = PixelAligned(progressClipper.getWidth() * w->getProgress()); if (d_reversed) { progressClipper.d_left = progressClipper.d_right - width; } else { progressClipper.setWidth(width); } } // peform the rendering operation. imagery->render(*d_window, progressRect, 0, &progressClipper); // perform the text rendering operation imagery = &wlf.getStateImagery("Label"); imagery->render(*d_window); }