1 /** 2 * Copyright (c) 2006-2019 LOVE Development Team 3 * 4 * This software is provided 'as-is', without any express or implied 5 * warranty. In no event will the authors be held liable for any damages 6 * arising from the use of this software. 7 * 8 * Permission is granted to anyone to use this software for any purpose, 9 * including commercial applications, and to alter it and redistribute it 10 * freely, subject to the following restrictions: 11 * 12 * 1. The origin of this software must not be misrepresented; you must not 13 * claim that you wrote the original software. If you use this software 14 * in a product, an acknowledgment in the product documentation would be 15 * appreciated but is not required. 16 * 2. Altered source versions must be plainly marked as such, and must not be 17 * misrepresented as being the original software. 18 * 3. This notice may not be removed or altered from any source distribution. 19 **/ 20 21 #ifndef LOVE_GRAPHICS_DRAWABLE_H 22 #define LOVE_GRAPHICS_DRAWABLE_H 23 24 // LOVE 25 #include "common/Object.h" 26 #include "common/Matrix.h" 27 28 namespace love 29 { 30 namespace graphics 31 { 32 33 class Graphics; 34 35 /** 36 * A Drawable is anything that can be drawn on screen with a 37 * position, scale and orientation. 38 **/ 39 class Drawable : public Object 40 { 41 public: 42 43 static love::Type type; 44 45 /** 46 * Destructor. 47 **/ ~Drawable()48 virtual ~Drawable() {} 49 50 /** 51 * Draws the object with the specified transformation matrix. 52 **/ 53 virtual void draw(Graphics *gfx, const Matrix4 &m) = 0; 54 }; 55 56 } // graphics 57 } // love 58 59 #endif // LOVE_GRAPHICS_DRAWABLE_H 60