namespace EE::Graphics

namespace Graphics {

// enums

enum FontAntialiasing;
enum FontHinting;
enum FontHorizontalAlign;
enum FontType;
enum FontVerticalAlign;
enum GraphicsLibraryExtension;
enum GraphicsLibraryVersion;
enum ParticleEffect;
enum PixelDensitySize;
enum PrimitiveFillMode;
enum PrimitiveType;
enum RenderMode;
enum VertexArrayStates;
enum VertexBufferUsageType;
enum VertexFlags;

// structs

struct VertexData;

// classes

class ArcDrawable;
class BatchRenderer;
class BlendMode;
class CircleDrawable;
class ClippingMask;
class ConvexShapeDrawable;
class Drawable;
class DrawableGroup;
class DrawableResource;
class DrawableSearcher;
class Font;
class FontBMFont;
class FontFamily;
class FontManager;
class FontSprite;
class FontStyleConfig;
class FontTrueType;
class FragmentShader;
class FrameBuffer;
class GlobalBatchRenderer;
class GlobalTextureAtlas;
class Glyph;
class GlyphDrawable;
class Image;
class NinePatch;
class NinePatchManager;
class Particle;
class ParticleSystem;
class PixelDensity;
class PrimitiveDrawable;
class Primitives;
class RectangleDrawable;
class Renderer;
class RendererGL;
class RendererGLShader;
class ScrollParallax;
class Shader;
class ShaderProgram;
class ShaderProgramManager;
class Sprite;
class StateListDrawable;
class StatefulDrawable;
class Text;
class TextTransform;
class Texture;
class TextureAtlas;
class TextureAtlasLoader;
class TextureAtlasManager;
class TextureFactory;
class TextureLoader;
class TexturePacker;
class TextureRegion;
class TriangleDrawable;
class VertexBuffer;
class VertexBufferOGL;
class VertexBufferVBO;
class VertexShader;
class View;

// global variables

EE_API Renderer* GLi;
const int VertexElementCount[] = {   2,      2,      2,      2,      2,      4   };

// global functions

EE_API bool operator==(const BlendMode& left, const BlendMode& right);
EE_API bool operator!=(const BlendMode& left, const BlendMode& right);

} // namespace Graphics