JNGL
Easy to use cross-platform 2D game library
Loading...
Searching...
No Matches
Classes | Public Types | Public Member Functions | Static Public Member Functions | Public Attributes | List of all members
Sprite Class Reference

Higher-level representation of an image. More...

#include <jngl/sprite.hpp>

Classes

class  Loader
 Use this class to load a Sprite asynchronously. More...
 

Public Types

enum class  LoadType { NORMAL , HALF , THREADED }
 

Public Member Functions

 Sprite (const unsigned char *bytes, size_t width, size_t height)
 
 Sprite (const std::string &filename, LoadType loadType=LoadType::NORMAL)
 
void step () override
 Does nothing. More...
 
void draw () const override
 Draws the Sprite, centered by default. More...
 
void draw (Mat3 modelview, const ShaderProgram *=nullptr) const
 Draws the image centered using modelview. More...
 
void draw (const ShaderProgram *shaderProgram) const
 
void drawScaled (float xfactor, float yfactor, const ShaderProgram *shaderProgram=nullptr) const
 Draws the image scaled by xfactor and yfactor More...
 
void drawClipped (float xstart, float xend, float ystart, float yend) const
 
void drawClipped (Vec2 start, Vec2 end) const
 Draw a cutout of the sprite. drawClipped({0, 0}, {1, 1}) would draw it normally.
 
void drawMesh (const std::vector< Vertex > &vertexes, const ShaderProgram *=nullptr) const
 Draws a list of triangles with the sprite's texture on it using the global modelview from jngl::modelview()
 
void drawMesh (Mat3 modelview, const std::vector< Vertex > &vertexes, const ShaderProgram *=nullptr) const
 Draws a list of triangles with the sprite's texture on it, ignores the Sprite's position.
 
void setBytes (const unsigned char *)
 
- Public Member Functions inherited from Drawable
 Drawable (const Drawable &)=default
 
Drawableoperator= (const Drawable &)=default
 
 Drawable (Drawable &&)=default
 
Drawableoperator= (Drawable &&)=default
 
virtual void step ()=0
 Advance object's state. More...
 
virtual void draw () const =0
 Called when drawing a frame. More...
 
virtual void setPos (double x, double y)
 Sets the position of the top-left of the Drawable.
 
template<class Vect >
void setPos (Vect p)
 Sets the position of the top-left of the Drawable. More...
 
jngl::Vec2 getCenter () const
 Returns the position of the center of the Drawable.
 
virtual void setCenter (double x, double y)
 Centers the Sprite at (x, y)
 
template<class Vect >
void setCenter (Vect c)
 Centers the Sprite at c (e.g. jngl::Vec2) More...
 
double getLeft () const
 Returns the distance from the left side of the screen.
 
void setLeft (double x)
 
double getTop () const
 Returns the distance from the top of the screen.
 
void setTop (double y)
 
double getRight () const
 Returns the distance from the right side of the screen.
 
void setRight (double x)
 
double getBottom () const
 Returns the distance from the bottom of the screen.
 
void setBottom (double y)
 
double getX () const
 
void setX (double)
 
double getY () const
 
void setY (double)
 
Vec2 getSize () const
 Returns {width, height} in screen coordinates.
 
float getWidth () const
 Returns the width in screen coordinates.
 
float getHeight () const
 Returns the height in screen coordinates.
 
void drawBoundingBox () const
 Draws a red box around the Drawable.
 
bool contains (jngl::Vec2 point) const
 Returns whether point is inside the bounding box.
 

Static Public Member Functions

static const ShadervertexShader ()
 Returns a reference to JNGL's default vertex shader used to draw textures.
 

Public Attributes

std::shared_ptr< Finallyloader
 Function which actually loads the sprite. More...
 

Additional Inherited Members

- Protected Attributes inherited from Drawable
Vec2 position
 
float width = 0
 
float height = 0
 

Detailed Description

Higher-level representation of an image.

Definition at line 23 of file sprite.hpp.

Inheritance diagram for Sprite:
[legend]
Collaboration diagram for Sprite:
[legend]

Member Enumeration Documentation

◆ LoadType

enum class LoadType
strong

Definition at line 25 of file sprite.hpp.

Constructor & Destructor Documentation

◆ Sprite()

Sprite ( const std::string filename,
LoadType  loadType = LoadType::NORMAL 
)
explicit
Deprecated:
Use Loader instead

Member Function Documentation

◆ step()

void step ( )
overridevirtual

Does nothing.

Implements Drawable.

◆ draw() [1/2]

void draw ( ) const
overridevirtual

Draws the Sprite, centered by default.

Implements Drawable.

◆ draw() [2/2]

void draw ( Mat3  modelview,
const ShaderProgram = nullptr 
) const

Draws the image centered using modelview.

Parameters
shaderProgramPassing nullptr uses the default.

◆ drawScaled()

void drawScaled ( float  xfactor,
float  yfactor,
const ShaderProgram shaderProgram = nullptr 
) const

Draws the image scaled by xfactor and yfactor

Parameters
xfactorScale width by this factor
yfactorScale height by this factor
shaderProgramPassing nullptr uses the default.

drawScaled(1, 1) would draw it normally. You can pass negative values to flip the image. For example drawScaled(-1, 1) would draw the image horizontally flipped.

Deprecated:
Scale the modelview matrix instead using jngl::Mat3::scale

◆ drawClipped()

void drawClipped ( float  xstart,
float  xend,
float  ystart,
float  yend 
) const
Deprecated:
Use new drawClipped(Vec2, Vec2) method instead

Member Data Documentation

◆ loader

Function which actually loads the sprite.

Definition at line 139 of file sprite.hpp.


The documentation for this class was generated from the following file: