ObjectivelyMVC 0.1.0
Object oriented MVC framework for OpenGL, SDL2 and GNU C
Public Member Functions | Data Fields | Protected Attributes
HSVColorPicker Struct Reference

The HSVColorPicker type. More...

#include <HSVColorPicker.h>

Inheritance diagram for HSVColorPicker:
Control View

Public Member Functions

Class * _HSVColorPicker (void)
 The HSVColorPicker archetype. More...
 
HSVColorPickerinitWithFrame (HSVColorPicker *self, const SDL_Rect *frame)
 Initializes this HSVColorPicker with the specified frame and style. More...
 
SDL_Color rgbColor (const HSVColorPicker *self)
 
void setColor (HSVColorPicker *self, double hue, double saturation, double value)
 Sets the color of the HSVColorPicker. More...
 
void setRGBColor (HSVColorPicker *self, const SDL_Color *color)
 Sets the color of the HSVColorPicker. More...
 
- Public Member Functions inherited from Control
Class * _Control (void)
 The Control archetype. More...
 
Array * actionsForEvent (const Control *self, const SDL_Event *event)
 
void addActionForEventType (Control *self, SDL_EventType eventType, ActionFunction function, ident sender, ident data)
 Adds an Action for the given event type to this Control. More...
 
_Bool captureEvent (Control *self, const SDL_Event *event)
 Captures a given event, potentially altering the state of this Control. More...
 
Control initWithFrame (Control *self, const SDL_Rect *frame)
 Initializes this Control with the specified frame and style. More...
 
_Bool isDisabled (const Control *self)
 
_Bool isFocused (const Control *self)
 
_Bool isHighlighted (const Control *self)
 
_Bool isSelected (const Control *self)
 
void stateDidChange (Control *self)
 Called when the state of this Control changes. More...
 
- Public Member Functions inherited from View
Class * _View (void)
 The View archetype. More...
 
_Bool acceptsFirstResponder (const View *self)
 
void addClassName (View *self, const char *className)
 Adds the given class name to this View. More...
 
void addSubview (View *self, View *subview)
 Adds a subview to this view, to be drawn above its siblings. More...
 
void addSubviewRelativeTo (View *self, View *subview, View *other, ViewPosition position)
 Adds a subview to this view, positioned relatively to other. More...
 
 ancestorWithIdentifier (const View *self, const char *identifier)
 
void applyStyle (View *self, const Style *style)
 Applies the given Style to this View. More...
 
void applyTheme (View *self, const Theme *theme)
 Applies the given Theme to this View. More...
 
void applyThemeIfNeeded (View *self, const Theme *theme)
 Recursively applies the Theme to this View and its subviews. More...
 
void attachStylesheet (View *self, SDL_Window *window)
 Attaches this View's Stylesheet to the Theme associated with the given window. More...
 
void awakeWithCharacters (View *self, const char *chars)
 Wakes this View with the given null-terminated JSON C string. More...
 
void awakeWithData (View *self, const Data *data)
 Wakes this View with the specified JSON Data. More...
 
void awakeWithDictionary (View *self, const Dictionary *dictionary)
 Wakes this View with the specified Dictionary. More...
 
void awakeWithResource (View *self, const Resource *resource)
 Wakes this View with the specified Resource. More...
 
void awakeWithResourceName (View *self, const char *name)
 Wakes this View with the Resource by the specified name. More...
 
void becomeFirstResponder (View *self)
 Become the first responder in the View hierarchy. More...
 
_Bool bind (View *self, const Inlet *inlets, const Dictionary *dictionary)
 Performs data binding for the Inlets described in dictionary. More...
 
SDL_Rect bounds (const View *self)
 
void bringSubviewToFront (View *self, View *subview)
 Brings the specified subview to the front. More...
 
SDL_Rect clippingFrame (const View *self)
 
_Bool containsPoint (const View *self, const SDL_Point *point)
 
int depth (const View *self)
 
 descendantWithIdentifier (const View *self, const char *identifier)
 
void detachStylesheet (View *self, SDL_Window *window)
 Detaches this View's Stylesheet from the Theme associated with the given window. More...
 
void didMoveToWindow (View *self, SDL_Window *window)
 Informs this View that it has been added to the View hierachy of the given window. More...
 
_Bool didReceiveEvent (const View *self, const SDL_Event *event)
 
void * draw (View *self, Renderer *renderer)
 Draws this View. More...
 
void enumerate (const View *self, ViewEnumerator enumerator, ident data)
 
void enumerate (View *self, ViewEnumerator enumerator, ident data)
 Enumerates this View and its descendants, applying enumerator to each. More...
 
void enumerateAdjacent (const View *self, ViewEnumerator enumerator, ident data)
 Enumerates adjacent siblings of this View, applying enumerator to each. More...
 
void enumerateAncestors (const View *self, ViewEnumerator enumerator, ident data)
 Enumerates all ancestors of this View, applying enumerator to each. More...
 
void enumerateDescendants (const View *self, ViewEnumerator enumerator, ident data)
 Enumerates all descendants of this View, applying enumerator to each. More...
 
void enumerateSelection (View *self, const char *rule, ViewEnumerator enumerator, ident data)
 Enumerates all Views in the selection matched by rule, applying enumerator to each. More...
 
void enumerateSiblings (const View *self, ViewEnumerator enumerator, ident data)
 Enumerates all siblings of this View, applying enumerator to each. More...
 
void enumerateSubviews (const View *self, ViewEnumerator enumerator, ident data)
 Enumerates all subviews of this View, applying enumerator to each. More...
 
void enumerateSuperview (const View *self, ViewEnumerator enumerator, ident data)
 Enumerates the superview of this View, if any, applying enumerator to it. More...
 
ViewfirstResponder (SDL_Window *window)
 
_Bool hasClassName (const View *self, cosnt char *className)
 
ViewhitTest (const View *self, const SDL_Point *point)
 Performs a hit test against this View and its descendants for the given point. More...
 
Viewinit (View *self)
 Initializes this View. More...
 
ViewinitWithFrame (View *self, const SDL_Rect *frame)
 Initializes this View with the specified frame. More...
 
void invalidateStyle (View *self)
 Invalidates the computed Style for this View and its descendants. More...
 
_Bool isContainer (const View *self)
 
_Bool isDescendantOfView (const View *self, const View *view)
 
_Bool isFirstResponder (const View *self)
 
_Bool isVisible (const View *self)
 
void layoutIfNeeded (View *self)
 Recursively updates the layout of this View and its subviews. More...
 
 layoutSubviews (View *self)
 Performs layout for this View's immediate subviews. More...
 
_Bool matchesSelector (const View *self, const SimpleSelector *simpleSelector)
 
void moveToWindow (View *self, SDL_Window *window)
 Moves this View to the View hierarchy of the given window. More...
 
String * path (const View *self)
 
void removeAllClassNames (View *self)
 Removes all class names from this View. More...
 
void removeAllSubviews (View *self)
 Removes all subviews from this View. More...
 
void removeClassName (View *self, const char *className)
 Removes the given class name to this View. More...
 
void removeFromSuperview (View *self)
 Removes this View from its superview. More...
 
void removeSubview (View *self, View *subview)
 Removes the given subview from this View. More...
 
void render (View *self, Renderer *renderer)
 Renders this View using the given renderer. More...
 
void renderDeviceDidReset (View *self)
 Informs this View that the render device has reset. More...
 
void renderDeviceWillReset (View *self)
 Informs this View that the render device will reset. More...
 
SDL_Rect renderFrame (const View *self)
 
void replaceSubview (View *self, View *subview, View *replacement)
 Replaces the specified subview with the given replacement. More...
 
void resignFirstResponder (View *self)
 Resigns first responder priority. More...
 
void resize (View *self, const SDL_Size *size)
 Resizes this View to the specified size. More...
 
void resolve (View *self, Outlet *outlets)
 Resolves the given Outlets from this View's hierarchy. More...
 
void respondToEvent (View *self, const SDL_Event *event)
 Responds to the specified event. More...
 
Set * select (View *self, const char *rule)
 Resolves all descendants (including this View) that match the given Selector rule. More...
 
void setFirstResponder (SDL_Window *window, View *view)
 Sets the first responder for the given window. More...
 
SDL_Size size (const View *self)
 
SDL_Size sizeThatContains (const View *self)
 
void sizeThatFits (const View *self)
 
void sizeToContain (View *self)
 Resizes this View to contain its subviews. More...
 
void sizeToFit (View *self)
 Resizes this View to fit its subviews. More...
 
 subviewWithIdentifier (const View *self, const char *identifier)
 
void updateBindings (View *self)
 Updates data bindings, prompting the appropriate layout changes. More...
 
SDL_Rect viewport (const View *self)
 
ViewviewWithCharacters (const char *chars, Outlet *outlets)
 Instantiates a View initialized with the given null-terminated JSON C string. More...
 
ViewviewWithData (const Data *data, Outlet *outlets)
 Instantiates a View initialized with the contents of data. More...
 
ViewviewWithDictionary (const Dictionary *dictionary, Outlet *outlets)
 Instantiates a View initialized with the attributes described in dictionary. More...
 
ViewviewWithResource (const Resource *resource, Outlet *outlets)
 Instantiates a View initialized with the JSON data in resource. More...
 
ViewviewWithResourceName (const char *name, Outlet *outlets)
 Instantiates a View initialized with the JSON Resource with the specified name. More...
 
Array * visibleSubviews (const View *self)
 
void warn (View *self, const char *fmt,...)
 Appends a warning for this View. More...
 
void willMoveToWindow (View *self, SDL_Window *window)
 Informs this View that it will be added to the View hierarchy for the given window. More...
 

Data Fields

ViewcolorView
 The color preview. More...
 
Control control
 The superclass. More...
 
HSVColorPickerDelegate delegate
 The delegate. More...
 
double hue
 The color components. More...
 
InputhueInput
 The Inputs containing the Sliders. More...
 
SliderhueSlider
 The Sliders. More...
 
double saturation
 
InputsaturationInput
 
SlidersaturationSlider
 
StackViewstackView
 The StackView. More...
 
double value
 
InputvalueInput
 
SlidervalueSlider
 
- Data Fields inherited from Control
ControlBevel bevel
 The ControlBevel. More...
 
ControlSelection selection
 The ControlSelection. More...
 
unsigned int state
 The bit mask of ControlState. More...
 
View view
 The superclass. More...
 
- Data Fields inherited from View
ViewAlignment alignment
 The alignment. More...
 
int autoresizingMask
 The ViewAutoresizing bitmask. More...
 
SDL_Color backgroundColor
 The background color. More...
 
SDL_Color borderColor
 The border color. More...
 
int borderWidth
 The border width. More...
 
MutableSet * classNames
 The class names. More...
 
_Bool clipsSubviews
 If true, subviews will be clipped to this View's frame. More...
 
StylecomputedStyle
 The computed Style of this View. More...
 
SDL_Rect frame
 The frame, relative to the superview. More...
 
_Bool hidden
 If true, this View is not drawn. More...
 
char * identifier
 An optional identifier. More...
 
SDL_Size maxSize
 The maximum size this View may be resized to during layout. More...
 
SDL_Size minSize
 The minimum size this View may be resized to during layout. More...
 
_Bool needsApplyTheme
 If true, this View will apply the Theme before it is drawn. More...
 
_Bool needsLayout
 If true, this View will layout its subviews before it is drawn. More...
 
ViewnextResponder
 The next responder, or event handler, in the chain. More...
 
Object object
 The superclass. More...
 
ViewPadding padding
 The padding. More...
 
Stylestyle
 The element-level Style of this View. More...
 
Stylesheetstylesheet
 An optional Stylesheet. More...
 
MutableArray * subviews
 The immediate subviews. More...
 
Viewsuperview
 The super View. More...
 
ViewControllerviewController
 The ViewController. More...
 
MutableArray * warnings
 The warnings this View generated. More...
 
SDL_Window * window
 The window. More...
 

Protected Attributes

HSVColorPickerInterface * interface
 The interface. More...
 
- Protected Attributes inherited from Control
ControlInterface * interface
 The interface. More...
 
- Protected Attributes inherited from View
ViewInterface * interface
 The interface. More...
 

Detailed Description

The HSVColorPicker type.

Definition at line 65 of file HSVColorPicker.h.

Member Function Documentation

◆ _HSVColorPicker()

Class * _HSVColorPicker ( void  )

The HSVColorPicker archetype.

Returns
The HSVColorPicker Class.

Definition at line 259 of file HSVColorPicker.c.

259 {
260 static Class *clazz;
261 static Once once;
262
263 do_once(&once, {
264 clazz = _initialize(&(const ClassDef) {
265 .name = "HSVColorPicker",
266 .superclass = _Control(),
267 .instanceSize = sizeof(HSVColorPicker),
268 .interfaceOffset = offsetof(HSVColorPicker, interface),
269 .interfaceSize = sizeof(HSVColorPickerInterface),
271 });
272 });
273
274 return clazz;
275}
static void initialize(Class *clazz)
Class * _Control(void)
The Control archetype.
Definition: Control.c:379
The HSVColorPicker type.
HSVColorPickerInterface * interface
The interface.

◆ initWithFrame()

HSVColorPicker * initWithFrame ( HSVColorPicker self,
const SDL_Rect *  frame 
)

Initializes this HSVColorPicker with the specified frame and style.

Parameters
selfThe HSVColorPicker.
frameThe frame.
Returns
The initialized HSVColorPicker, or NULL on error.

Definition at line 134 of file HSVColorPicker.c.

134 {
135
136 self = (HSVColorPicker *) super(Control, self, initWithFrame, frame);
137 if (self) {
138
139 self->stackView = $(alloc(StackView), initWithFrame, NULL);
140 assert(self->stackView);
141
142 $((View *) self, addSubview, (View *) self->stackView);
143
144 self->colorView = $(alloc(View), initWithFrame, &MakeRect(0, 0, 0, 24));
145 assert(self->colorView);
146
147 $(self->colorView, addClassName, "colorView");
148 $((View *) self->stackView, addSubview, self->colorView);
149
150 self->hueSlider = $(alloc(Slider), initWithFrame, NULL);
151 assert(self->hueSlider);
152
153 self->hueSlider->delegate.self = self;
154 self->hueSlider->delegate.didSetValue = didSetComponent;
155 self->hueSlider->max = 360.0;
156 $(self->hueSlider, setLabelFormat, "%.0lf");
157
158 self->hueInput = $(alloc(Input), initWithFrame, NULL);
159 assert(self->hueInput);
160
161 $(self->hueInput, setControl, (Control *) self->hueSlider);
162 $(self->hueInput->label->text, setText, "H");
163
164 $((View *) self->stackView, addSubview, (View *) self->hueInput);
165
166 self->saturationSlider = $(alloc(Slider), initWithFrame, NULL);
167 assert(self->saturationSlider);
168
169 self->saturationSlider->delegate.self = self;
170 self->saturationSlider->delegate.didSetValue = didSetComponent;
171 self->saturationSlider->max = 1.0;
172 $(self->saturationSlider, setLabelFormat, "%.3f");
173
174 self->saturationInput = $(alloc(Input), initWithFrame, NULL);
175 assert(self->saturationInput);
176
177 $(self->saturationInput, setControl, (Control *) self->saturationSlider);
178 $(self->saturationInput->label->text, setText, "S");
179
180 $((View *) self->stackView, addSubview, (View *) self->saturationInput);
181
182 self->valueSlider = $(alloc(Slider), initWithFrame, NULL);
183 assert(self->valueSlider);
184
185 self->valueSlider->delegate.self = self;
186 self->valueSlider->delegate.didSetValue = didSetComponent;
187 self->valueSlider->max = 1.0;
188 $(self->valueSlider, setLabelFormat, "%.3f");
189
190 self->valueInput = $(alloc(Input), initWithFrame, NULL);
191 assert(self->valueInput);
192
193 $(self->valueInput, setControl, (Control *) self->valueSlider);
194 $(self->valueInput->label->text, setText, "V");
195
196 $((View *) self->stackView, addSubview, (View *) self->valueInput);
197
198 $(self, setColor, 0.0, 1.0, 1.0);
199 }
200
201 return self;
202}
static void didSetComponent(Slider *slider, double value)
SliderDelegate callback for color component modification.
static void setControl(Input *self, Control *control)
Definition: Input.c:113
static void setLabelFormat(ProgressBar *self, const char *labelFormat)
Definition: ProgressBar.c:145
static void setText(Text *self, const char *text)
Definition: Text.c:261
#define MakeRect(x, y, w, h)
Creates an SDL_Rect with the given origin and size.
Definition: Types.h:74
Controls are Views which capture events and dispatch Actions.
Definition: Control.h:83
HSVColorPicker * initWithFrame(HSVColorPicker *self, const SDL_Rect *frame)
Initializes this HSVColorPicker with the specified frame and style.
void setColor(HSVColorPicker *self, double hue, double saturation, double value)
Sets the color of the HSVColorPicker.
StackView * stackView
The StackView.
An Input stacks a Label with a Control.
Definition: Input.h:57
A Control allowing users to drag a handle to select a numeric value.
Definition: Slider.h:62
StackViews are containers that manage the arrangement of their subviews.
Definition: StackView.h:68
Views are the fundamental building blocks of ObjectivelyMVC user interfaces.
Definition: View.h:133
void addSubview(View *self, View *subview)
Adds a subview to this view, to be drawn above its siblings.
Definition: PageView.c:35
void addClassName(View *self, const char *className)
Adds the given class name to this View.
Definition: View.c:120
SDL_Rect frame
The frame, relative to the superview.
Definition: View.h:190

◆ rgbColor()

SDL_Color rgbColor ( const HSVColorPicker self)
Parameters
selfThe HSVColorPicker.
Returns
The RGB color.

Definition at line 208 of file HSVColorPicker.c.

208 {
209 return MVC_HSVToRGB(self->hue, self->saturation, self->value);
210}
SDL_Color MVC_HSVToRGB(double hue, double saturation, double value)
Definition: Colors.c:684
double hue
The color components.

◆ setColor()

void setColor ( HSVColorPicker self,
double  hue,
double  saturation,
double  value 
)

Sets the color of the HSVColorPicker.

Parameters
selfThe HSVColorPicker.
hueThe hue.
saturationThe saturation.
valueThe brightness value.

Definition at line 216 of file HSVColorPicker.c.

216 {
217
218 self->hue = hue;
219 self->saturation = saturation;
220 self->value = value;
221
222 $((View *) self, updateBindings);
223}
void updateBindings(View *self)
Updates data bindings, prompting the appropriate layout changes.

◆ setRGBColor()

void setRGBColor ( HSVColorPicker self,
const SDL_Color *  color 
)

Sets the color of the HSVColorPicker.

Parameters
selfThe HSVColorPicker.
colorThe RGB color.

Definition at line 229 of file HSVColorPicker.c.

229 {
230
231 MVC_RGBToHSV(color, &self->hue, &self->saturation, &self->value);
232
233 $((View *) self, updateBindings);
234}
void MVC_RGBToHSV(const SDL_Color *color, double *hue, double *saturation, double *value)
Definition: Colors.c:732

Field Documentation

◆ colorView

View* HSVColorPicker::colorView

The color preview.

Definition at line 81 of file HSVColorPicker.h.

◆ control

Control HSVColorPicker::control

The superclass.

Definition at line 70 of file HSVColorPicker.h.

◆ delegate

HSVColorPickerDelegate HSVColorPicker::delegate

The delegate.

Definition at line 86 of file HSVColorPicker.h.

◆ hue

double HSVColorPicker::hue

The color components.

Definition at line 91 of file HSVColorPicker.h.

◆ hueInput

Input* HSVColorPicker::hueInput

The Inputs containing the Sliders.

Definition at line 101 of file HSVColorPicker.h.

◆ hueSlider

Slider* HSVColorPicker::hueSlider

The Sliders.

Definition at line 96 of file HSVColorPicker.h.

◆ interface

HSVColorPickerInterface* HSVColorPicker::interface
protected

The interface.

Definition at line 76 of file HSVColorPicker.h.

◆ saturation

double HSVColorPicker::saturation

Definition at line 91 of file HSVColorPicker.h.

◆ saturationInput

Input * HSVColorPicker::saturationInput

Definition at line 101 of file HSVColorPicker.h.

◆ saturationSlider

Slider * HSVColorPicker::saturationSlider

Definition at line 96 of file HSVColorPicker.h.

◆ stackView

StackView* HSVColorPicker::stackView

The StackView.

Definition at line 106 of file HSVColorPicker.h.

◆ value

double HSVColorPicker::value

Definition at line 91 of file HSVColorPicker.h.

◆ valueInput

Input * HSVColorPicker::valueInput

Definition at line 101 of file HSVColorPicker.h.

◆ valueSlider

Slider * HSVColorPicker::valueSlider

Definition at line 96 of file HSVColorPicker.h.


The documentation for this struct was generated from the following files: