Miroslaw K. / Graphics

Dependents:   RadarDemo 3DDemo RadarDemoT

Committer:
karpent
Date:
Thu Nov 10 15:34:43 2016 +0000
Revision:
2:02b7b78e8510
Parent:
1:871f62b5f150
Child:
3:1ddc4aa1e5cb
DrawText() method added

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 2:02b7b78e8510 22 #include "GrFont.h"
karpent 0:566855d63a2f 23
karpent 0:566855d63a2f 24 #define PLANE_BITMAP_ELEMENT_BITS 8
karpent 0:566855d63a2f 25
karpent 0:566855d63a2f 26 /**
karpent 0:566855d63a2f 27 * @brief Canvas is a frame buffer where everything is drawn,
karpent 0:566855d63a2f 28 * uses its own graphics commands to create graphics.
karpent 0:566855d63a2f 29 * Cavas bitmap must be copied to the display to make image visible.
karpent 0:566855d63a2f 30 */
karpent 0:566855d63a2f 31 class Canvas : public Display
karpent 0:566855d63a2f 32 {
karpent 0:566855d63a2f 33 public:
karpent 0:566855d63a2f 34
karpent 0:566855d63a2f 35 /// <summary>
karpent 0:566855d63a2f 36 /// Initializes a new instance of the <see cref="Canvas"/> class.
karpent 0:566855d63a2f 37 /// </summary>
karpent 0:566855d63a2f 38 /// Class constructor
karpent 0:566855d63a2f 39 Canvas();
karpent 0:566855d63a2f 40
karpent 0:566855d63a2f 41 /// <summary>
karpent 0:566855d63a2f 42 /// Initializes a new instance of the <see cref="Canvas"/> class.
karpent 0:566855d63a2f 43 /// </summary>
karpent 0:566855d63a2f 44 /// <param name="width">The width.</param>
karpent 0:566855d63a2f 45 /// <param name="height">The height.</param>
karpent 0:566855d63a2f 46 Canvas(uint16_t width, uint16_t height);
karpent 0:566855d63a2f 47
karpent 0:566855d63a2f 48 /// <summary>
karpent 0:566855d63a2f 49 /// Finalizes an instance of the <see cref="Canvas"/> class.
karpent 0:566855d63a2f 50 /// </summary>
karpent 0:566855d63a2f 51 ~Canvas();
karpent 0:566855d63a2f 52
karpent 0:566855d63a2f 53 /// <summary>
karpent 0:566855d63a2f 54 /// Clears the canvas.
karpent 0:566855d63a2f 55 /// </summary>
karpent 2:02b7b78e8510 56 void virtual Clear();
karpent 0:566855d63a2f 57
karpent 0:566855d63a2f 58 /// <summary>
karpent 0:566855d63a2f 59 /// Gets the bitmap.
karpent 0:566855d63a2f 60 /// </summary>
karpent 0:566855d63a2f 61 /// <returns></returns>
karpent 0:566855d63a2f 62 uint8_t* GetBitmap();
karpent 0:566855d63a2f 63
karpent 0:566855d63a2f 64 /// <summary>
karpent 0:566855d63a2f 65 /// Returns screen width.
karpent 0:566855d63a2f 66 /// </summary>
karpent 0:566855d63a2f 67 /// <returns></returns>
karpent 0:566855d63a2f 68 uint16_t virtual DisplayWidth();
karpent 0:566855d63a2f 69
karpent 0:566855d63a2f 70 /// <summary>
karpent 0:566855d63a2f 71 /// Redurns screen height.
karpent 0:566855d63a2f 72 /// </summary>
karpent 0:566855d63a2f 73 /// <returns></returns>
karpent 0:566855d63a2f 74 uint16_t virtual DisplayHeight();
karpent 1:871f62b5f150 75
karpent 1:871f62b5f150 76 /// <summary>
karpent 1:871f62b5f150 77 /// Sets the color of the draw.
karpent 1:871f62b5f150 78 /// </summary>
karpent 1:871f62b5f150 79 /// <param name="red">The red.</param>
karpent 1:871f62b5f150 80 /// <param name="green">The green.</param>
karpent 1:871f62b5f150 81 /// <param name="blue">The blue.</param>
karpent 1:871f62b5f150 82 /// <param name="alpha">The alpha.</param>
karpent 1:871f62b5f150 83 void virtual SetDrawColor(uint8_t red, uint8_t green, uint8_t blue, uint8_t alpha);
karpent 2:02b7b78e8510 84
karpent 2:02b7b78e8510 85 /// <summary>
karpent 2:02b7b78e8510 86 /// Gets the color of the draw.
karpent 2:02b7b78e8510 87 /// </summary>
karpent 2:02b7b78e8510 88 /// <returns>Draw color value</returns>
karpent 2:02b7b78e8510 89 uint32_t virtual GetDrawColor();
karpent 2:02b7b78e8510 90
karpent 2:02b7b78e8510 91 /// <summary>
karpent 2:02b7b78e8510 92 /// Sets the clear color.
karpent 2:02b7b78e8510 93 /// </summary>
karpent 2:02b7b78e8510 94 /// <param name="red">The red.</param>
karpent 2:02b7b78e8510 95 /// <param name="green">The green.</param>
karpent 2:02b7b78e8510 96 /// <param name="blue">The blue.</param>
karpent 2:02b7b78e8510 97 /// <param name="alpha">The alpha.</param>
karpent 2:02b7b78e8510 98 void virtual SetClearColor(uint8_t red, uint8_t green, uint8_t blue, uint8_t alpha);
karpent 2:02b7b78e8510 99
karpent 2:02b7b78e8510 100 /// <summary>
karpent 2:02b7b78e8510 101 /// Gets the clear color.
karpent 2:02b7b78e8510 102 /// </summary>
karpent 2:02b7b78e8510 103 /// <returns>Clear color value</returns>
karpent 2:02b7b78e8510 104 uint32_t virtual GetClearColor();
karpent 0:566855d63a2f 105
karpent 0:566855d63a2f 106 /// <summary>
karpent 0:566855d63a2f 107 /// Draws the point.
karpent 0:566855d63a2f 108 /// </summary>
karpent 0:566855d63a2f 109 /// <param name="posX">The position x.</param>
karpent 0:566855d63a2f 110 /// <param name="posY">The position y.</param>
karpent 0:566855d63a2f 111 /// <param name="colorMask">The color mask.</param>
karpent 0:566855d63a2f 112 void virtual DrawPoint(int posX, int posY, uint32_t colorMask);
karpent 0:566855d63a2f 113
karpent 0:566855d63a2f 114 /// <summary>
karpent 0:566855d63a2f 115 /// Sets the size.
karpent 0:566855d63a2f 116 /// </summary>
karpent 0:566855d63a2f 117 /// <param name="width">The width.</param>
karpent 0:566855d63a2f 118 /// <param name="height">The height.</param>
karpent 0:566855d63a2f 119 /// <returns></returns>
karpent 0:566855d63a2f 120 bool SetSize(uint16_t width, uint16_t height);
karpent 0:566855d63a2f 121
karpent 0:566855d63a2f 122 /// <summary>
karpent 0:566855d63a2f 123 /// Determines whether this instance is set.
karpent 0:566855d63a2f 124 /// </summary>
karpent 0:566855d63a2f 125 /// <returns>
karpent 0:566855d63a2f 126 /// <c>true</c> if this instance is set; otherwise, <c>false</c>.
karpent 0:566855d63a2f 127 /// </returns>
karpent 0:566855d63a2f 128 bool IsSet();
karpent 2:02b7b78e8510 129
karpent 2:02b7b78e8510 130 /// <summary>
karpent 2:02b7b78e8510 131 /// Draws the text using actual font type and size.
karpent 2:02b7b78e8510 132 /// </summary>
karpent 2:02b7b78e8510 133 /// <param name="posX">The position x.</param>
karpent 2:02b7b78e8510 134 /// <param name="posY">The position y.</param>
karpent 2:02b7b78e8510 135 /// <param name="str">The string.</param>
karpent 2:02b7b78e8510 136 void virtual DrawText(int posX, int posY, char * str);
karpent 0:566855d63a2f 137
karpent 0:566855d63a2f 138 private:
karpent 0:566855d63a2f 139 /// <summary>
karpent 0:566855d63a2f 140 /// Resets this instance.
karpent 0:566855d63a2f 141 /// </summary>
karpent 0:566855d63a2f 142 void Reset();
karpent 0:566855d63a2f 143
karpent 0:566855d63a2f 144 uint16_t _width;
karpent 0:566855d63a2f 145 uint32_t _height;
karpent 0:566855d63a2f 146
karpent 0:566855d63a2f 147 /*
karpent 0:566855d63a2f 148 * Canvas plane bitmap - depth 1.
karpent 0:566855d63a2f 149 */
karpent 0:566855d63a2f 150 uint8_t *_planeBitmap;
karpent 0:566855d63a2f 151 uint32_t _planeBitmapSize;
karpent 1:871f62b5f150 152
karpent 1:871f62b5f150 153 uint32_t _drawColor;
karpent 2:02b7b78e8510 154 uint32_t _clearColor;
karpent 2:02b7b78e8510 155
karpent 2:02b7b78e8510 156 /**
karpent 2:02b7b78e8510 157 * @brief Current fonts for layers
karpent 2:02b7b78e8510 158 */
karpent 2:02b7b78e8510 159 GrFont _selectedFont;
karpent 0:566855d63a2f 160 };