Miroslaw K. / Graphics

Dependents:   RadarDemo 3DDemo RadarDemoT

Committer:
karpent
Date:
Sun Nov 06 02:13:11 2016 +0000
Revision:
1:871f62b5f150
Parent:
0:566855d63a2f
Child:
2:02b7b78e8510
Missing methods implemented for canvas

Who changed what in which revision?

UserRevisionLine numberNew contents of line
karpent 0:566855d63a2f 1 /*
karpent 0:566855d63a2f 2 Canvas.h - Simple canvas class declaration
karpent 0:566855d63a2f 3
karpent 0:566855d63a2f 4 Copyright(c) 2016 karpent at gmail.com, MIT License
karpent 0:566855d63a2f 5
karpent 0:566855d63a2f 6 Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files(the "Software"),
karpent 0:566855d63a2f 7 to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense,
karpent 0:566855d63a2f 8 and / or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions :
karpent 0:566855d63a2f 9
karpent 0:566855d63a2f 10 The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
karpent 0:566855d63a2f 11
karpent 0:566855d63a2f 12 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
karpent 0:566855d63a2f 13 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
karpent 0:566855d63a2f 14 OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR
karpent 0:566855d63a2f 15 THE USE OR OTHER DEALINGS IN THE SOFTWARE.
karpent 0:566855d63a2f 16 */
karpent 0:566855d63a2f 17
karpent 0:566855d63a2f 18 #pragma once
karpent 0:566855d63a2f 19
karpent 0:566855d63a2f 20 #include "Commons.h"
karpent 0:566855d63a2f 21 #include "Display.h"
karpent 0:566855d63a2f 22
karpent 0:566855d63a2f 23 #define PLANE_BITMAP_ELEMENT_BITS 8
karpent 0:566855d63a2f 24
karpent 0:566855d63a2f 25 /**
karpent 0:566855d63a2f 26 * @brief Canvas is a frame buffer where everything is drawn,
karpent 0:566855d63a2f 27 * uses its own graphics commands to create graphics.
karpent 0:566855d63a2f 28 * Cavas bitmap must be copied to the display to make image visible.
karpent 0:566855d63a2f 29 */
karpent 0:566855d63a2f 30 class Canvas : public Display
karpent 0:566855d63a2f 31 {
karpent 0:566855d63a2f 32 public:
karpent 0:566855d63a2f 33
karpent 0:566855d63a2f 34 /// <summary>
karpent 0:566855d63a2f 35 /// Initializes a new instance of the <see cref="Canvas"/> class.
karpent 0:566855d63a2f 36 /// </summary>
karpent 0:566855d63a2f 37 /// Class constructor
karpent 0:566855d63a2f 38 Canvas();
karpent 0:566855d63a2f 39
karpent 0:566855d63a2f 40 /// <summary>
karpent 0:566855d63a2f 41 /// Initializes a new instance of the <see cref="Canvas"/> class.
karpent 0:566855d63a2f 42 /// </summary>
karpent 0:566855d63a2f 43 /// <param name="width">The width.</param>
karpent 0:566855d63a2f 44 /// <param name="height">The height.</param>
karpent 0:566855d63a2f 45 Canvas(uint16_t width, uint16_t height);
karpent 0:566855d63a2f 46
karpent 0:566855d63a2f 47 /// <summary>
karpent 0:566855d63a2f 48 /// Finalizes an instance of the <see cref="Canvas"/> class.
karpent 0:566855d63a2f 49 /// </summary>
karpent 0:566855d63a2f 50 ~Canvas();
karpent 0:566855d63a2f 51
karpent 0:566855d63a2f 52 /// <summary>
karpent 0:566855d63a2f 53 /// Clears the canvas.
karpent 0:566855d63a2f 54 /// </summary>
karpent 0:566855d63a2f 55 void Clear();
karpent 0:566855d63a2f 56
karpent 0:566855d63a2f 57 /// <summary>
karpent 0:566855d63a2f 58 /// Gets the bitmap.
karpent 0:566855d63a2f 59 /// </summary>
karpent 0:566855d63a2f 60 /// <returns></returns>
karpent 0:566855d63a2f 61 uint8_t* GetBitmap();
karpent 0:566855d63a2f 62
karpent 0:566855d63a2f 63 /// <summary>
karpent 0:566855d63a2f 64 /// Returns screen width.
karpent 0:566855d63a2f 65 /// </summary>
karpent 0:566855d63a2f 66 /// <returns></returns>
karpent 0:566855d63a2f 67 uint16_t virtual DisplayWidth();
karpent 0:566855d63a2f 68
karpent 0:566855d63a2f 69 /// <summary>
karpent 0:566855d63a2f 70 /// Redurns screen height.
karpent 0:566855d63a2f 71 /// </summary>
karpent 0:566855d63a2f 72 /// <returns></returns>
karpent 0:566855d63a2f 73 uint16_t virtual DisplayHeight();
karpent 1:871f62b5f150 74
karpent 1:871f62b5f150 75 /// <summary>
karpent 1:871f62b5f150 76 /// Sets the color of the draw.
karpent 1:871f62b5f150 77 /// </summary>
karpent 1:871f62b5f150 78 /// <param name="red">The red.</param>
karpent 1:871f62b5f150 79 /// <param name="green">The green.</param>
karpent 1:871f62b5f150 80 /// <param name="blue">The blue.</param>
karpent 1:871f62b5f150 81 /// <param name="alpha">The alpha.</param>
karpent 1:871f62b5f150 82 void virtual SetDrawColor(uint8_t red, uint8_t green, uint8_t blue, uint8_t alpha);
karpent 0:566855d63a2f 83
karpent 0:566855d63a2f 84 /// <summary>
karpent 0:566855d63a2f 85 /// Draws the point.
karpent 0:566855d63a2f 86 /// </summary>
karpent 0:566855d63a2f 87 /// <param name="posX">The position x.</param>
karpent 0:566855d63a2f 88 /// <param name="posY">The position y.</param>
karpent 0:566855d63a2f 89 /// <param name="colorMask">The color mask.</param>
karpent 0:566855d63a2f 90 void virtual DrawPoint(int posX, int posY, uint32_t colorMask);
karpent 1:871f62b5f150 91
karpent 1:871f62b5f150 92 uint32_t virtual GetDrawColor();
karpent 0:566855d63a2f 93
karpent 0:566855d63a2f 94 /// <summary>
karpent 0:566855d63a2f 95 /// Sets the size.
karpent 0:566855d63a2f 96 /// </summary>
karpent 0:566855d63a2f 97 /// <param name="width">The width.</param>
karpent 0:566855d63a2f 98 /// <param name="height">The height.</param>
karpent 0:566855d63a2f 99 /// <returns></returns>
karpent 0:566855d63a2f 100 bool SetSize(uint16_t width, uint16_t height);
karpent 0:566855d63a2f 101
karpent 0:566855d63a2f 102 /// <summary>
karpent 0:566855d63a2f 103 /// Determines whether this instance is set.
karpent 0:566855d63a2f 104 /// </summary>
karpent 0:566855d63a2f 105 /// <returns>
karpent 0:566855d63a2f 106 /// <c>true</c> if this instance is set; otherwise, <c>false</c>.
karpent 0:566855d63a2f 107 /// </returns>
karpent 0:566855d63a2f 108 bool IsSet();
karpent 0:566855d63a2f 109
karpent 0:566855d63a2f 110 private:
karpent 0:566855d63a2f 111 /// <summary>
karpent 0:566855d63a2f 112 /// Resets this instance.
karpent 0:566855d63a2f 113 /// </summary>
karpent 0:566855d63a2f 114 void Reset();
karpent 0:566855d63a2f 115
karpent 0:566855d63a2f 116 uint16_t _width;
karpent 0:566855d63a2f 117 uint32_t _height;
karpent 0:566855d63a2f 118
karpent 0:566855d63a2f 119 /*
karpent 0:566855d63a2f 120 * Canvas plane bitmap - depth 1.
karpent 0:566855d63a2f 121 */
karpent 0:566855d63a2f 122 uint8_t *_planeBitmap;
karpent 0:566855d63a2f 123 uint32_t _planeBitmapSize;
karpent 1:871f62b5f150 124
karpent 1:871f62b5f150 125 uint32_t _drawColor;
karpent 0:566855d63a2f 126 };