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

ImageViews render an Image in the context of a View hierarchy. More...

#include <ImageView.h>

Inheritance diagram for ImageView:
View

Public Member Functions

Class * _ImageView (void)
 
ImageViewinitWithFrame (ImageView *self, const SDL_Rect *frame)
 Initializes this ImageView with the specified frame. More...
 
ImageViewinitWithImage (ImageView *self, const SDL_Rect *frame)
 
ImageViewinitWithImage (ImageView *self, Image *image)
 Initializes this ImageView with the specified image. More...
 
void setImage (ImageView *self, Image *image)
 Sets the Image for this ImageView. More...
 
void setImageWithResource (ImageView *self, const Resource *resource)
 Sets the Image for this ImageView with the given Resource. More...
 
void setImageWithResourceName (ImageView *self, const char *name)
 Sets the Image for this ImageView with the Resource by the given name. More...
 
void setImageWithSurface (ImageView *self, SDL_Surface *surface)
 A convenience method to set this view's Image with a surface. 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

struct {
   GLenum   dst
 
   GLenum   src
 
blend
 The blend function. More...
 
SDL_Color color
 The drawing color. More...
 
Imageimage
 The image. More...
 
GLuint texture
 The texture. 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

ImageViewInterface * interface
 The interface. More...
 
- Protected Attributes inherited from View
ViewInterface * interface
 The interface. More...
 

Detailed Description

ImageViews render an Image in the context of a View hierarchy.

Definition at line 43 of file ImageView.h.

Member Function Documentation

◆ _ImageView()

Class * _ImageView ( void  )

Definition at line 261 of file ImageView.c.

261 {
262 static Class *clazz;
263 static Once once;
264
265 do_once(&once, {
266 clazz = _initialize(&(const ClassDef) {
267 .name = "ImageView",
268 .superclass = _View(),
269 .instanceSize = sizeof(ImageView),
270 .interfaceOffset = offsetof(ImageView, interface),
271 .interfaceSize = sizeof(ImageViewInterface),
273 });
274 });
275
276 return clazz;
277}
static void initialize(Class *clazz)
Definition: ImageView.c:240
ImageViews render an Image in the context of a View hierarchy.
Definition: ImageView.h:43
ImageViewInterface * interface
The interface.
Definition: ImageView.h:54
Class * _View(void)
The View archetype.
Definition: View.c:1769

◆ initWithFrame()

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

Initializes this ImageView with the specified frame.

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

Definition at line 140 of file ImageView.c.

140 {
141
142 self = (ImageView *) super(View, self, initWithFrame, frame);
143 if (self) {
144 self->blend.src = GL_SRC_ALPHA;
145 self->blend.dst = GL_ONE_MINUS_SRC_ALPHA;
146
147 self->color = Colors.White;
148 }
149
150 return self;
151}
W3C Color constants.
Definition: Colors.h:37
SDL_Color White
Definition: Colors.h:185
GLenum dst
Definition: ImageView.h:60
ImageView * initWithFrame(ImageView *self, const SDL_Rect *frame)
Initializes this ImageView with the specified frame.
Definition: ImageView.c:140
GLenum src
Definition: ImageView.h:60
SDL_Color color
The drawing color.
Definition: ImageView.h:66
struct ImageView::@0 blend
The blend function.
Views are the fundamental building blocks of ObjectivelyMVC user interfaces.
Definition: View.h:133
SDL_Rect frame
The frame, relative to the superview.
Definition: View.h:190

◆ initWithImage() [1/2]

ImageView * initWithImage ( ImageView self,
const SDL_Rect *  frame 
)

◆ initWithImage() [2/2]

ImageView * initWithImage ( ImageView self,
Image image 
)

Initializes this ImageView with the specified image.

Parameters
selfThe ImageView.
imageThe Image.
Returns
The initialized ImageView, or NULL on error.

Definition at line 157 of file ImageView.c.

157 {
158
159 self = (ImageView *) $(self, initWithFrame, NULL);
160 if (self) {
161 $(self, setImage, image);
162 }
163
164 return self;
165}
Image * image
The image.
Definition: ImageView.h:71
void setImage(ImageView *self, Image *image)
Sets the Image for this ImageView.
Definition: ImageView.c:171

◆ setImage()

void setImage ( ImageView self,
Image image 
)

Sets the Image for this ImageView.

Parameters
selfThe ImageView.
imageAn Image.

Definition at line 171 of file ImageView.c.

171 {
172
173 release(self->image);
174
175 if (image) {
176 self->image = retain(image);
177
178 const SDL_Size size = $((View *) self, size);
179 const SDL_Size imageSize = $(image, size);
180
181 if (size.w == 0 && size.h == 0) {
182 $((View *) self, resize, &imageSize);
183 }
184 } else {
185 self->image = NULL;
186 }
187
188 self->texture = 0;
189}
GLuint texture
The texture.
Definition: ImageView.h:76
The SDL_Size type.
Definition: Types.h:62
int w
Definition: Types.h:63
int h
Definition: Types.h:63
void resize(View *self, const SDL_Size *size)
Resizes this View to the specified size.
Definition: View.c:1326
SDL_Size size(const View *self)
Definition: View.c:1415

◆ setImageWithResource()

void setImageWithResource ( ImageView self,
const Resource *  resource 
)

Sets the Image for this ImageView with the given Resource.

Parameters
selfThe ImageView.
resourceAn Image Resource.

Definition at line 195 of file ImageView.c.

195 {
196
197 Image *image = $$(Image, imageWithResource, resource);
198
199 $(self, setImage, image);
200
201 release(image);
202}
static Image * imageWithResource(const Resource *resource)
Definition: Image.c:64
Image loading.
Definition: Image.h:38

◆ setImageWithResourceName()

void setImageWithResourceName ( ImageView self,
const char *  name 
)

Sets the Image for this ImageView with the Resource by the given name.

Parameters
selfThe ImageView.
nameAn Image Resource name.

Definition at line 208 of file ImageView.c.

208 {
209
210 Resource *resource = $$(Resource, resourceWithName, name);
211
212 $(self, setImageWithResource, resource);
213
214 release(resource);
215}
void setImageWithResource(ImageView *self, const Resource *resource)
Sets the Image for this ImageView with the given Resource.
Definition: ImageView.c:195

◆ setImageWithSurface()

void setImageWithSurface ( ImageView self,
SDL_Surface *  surface 
)

A convenience method to set this view's Image with a surface.

Parameters
selfThe ImageView.
surfaceThe surface.

Definition at line 221 of file ImageView.c.

221 {
222
223 $(self, setImage, NULL);
224
225 if (surface) {
226 Image *image = $(alloc(Image), initWithSurface, surface);
227 assert(image);
228
229 $(self, setImage, image);
230
231 release(image);
232 }
233}
static Image * initWithSurface(Image *self, SDL_Surface *surface)
Definition: Image.c:157

Field Documentation

◆ 

struct { ... } ImageView::blend

The blend function.

◆ color

SDL_Color ImageView::color

The drawing color.

Definition at line 66 of file ImageView.h.

◆ dst

GLenum ImageView::dst

Definition at line 60 of file ImageView.h.

◆ image

Image* ImageView::image

The image.

Definition at line 71 of file ImageView.h.

◆ interface

ImageViewInterface* ImageView::interface
protected

The interface.

Definition at line 54 of file ImageView.h.

◆ src

GLenum ImageView::src

Definition at line 60 of file ImageView.h.

◆ texture

GLuint ImageView::texture

The texture.

Definition at line 76 of file ImageView.h.

◆ view

View ImageView::view

The superclass.

Definition at line 48 of file ImageView.h.


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