#pragma once
#include "ThemeCocoa.h"
namespace WebCore {
class ThemeMac final : public ThemeCocoa {
public:
static NSView *ensuredView(ScrollView*, const ControlStates&, bool useUnparentedView = false);
static void setFocusRingClipRect(const FloatRect&);
static bool drawCellOrFocusRingWithViewIntoContext(NSCell *, GraphicsContext&, const FloatRect&, NSView *, bool drawButtonCell, bool drawFocusRing, bool useImageBuffer, float deviceScaleFactor);
private:
friend NeverDestroyed<ThemeMac>;
ThemeMac() = default;
int baselinePositionAdjustment(ControlPart) const final;
std::optional<FontCascadeDescription> controlFont(ControlPart, const FontCascade&, float zoomFactor) const final;
LengthSize controlSize(ControlPart, const FontCascade&, const LengthSize&, float zoomFactor) const final;
LengthSize minimumControlSize(ControlPart, const FontCascade&, float zoomFactor) const final;
LengthBox controlPadding(ControlPart, const FontCascade&, const LengthBox& zoomedBox, float zoomFactor) const final;
LengthBox controlBorder(ControlPart, const FontCascade&, const LengthBox& zoomedBox, float zoomFactor) const final;
bool controlRequiresPreWhiteSpace(ControlPart part) const final { return part == PushButtonPart; }
void paint(ControlPart, ControlStates&, GraphicsContext&, const FloatRect&, float zoomFactor, ScrollView*, float deviceScaleFactor, float pageScaleFactor) final;
void inflateControlPaintRect(ControlPart, const ControlStates&, FloatRect&, float zoomFactor) const final;
bool userPrefersReducedMotion() const final;
};
}