Clone13

Dependents:   SignalProcessLab DigitalSignalAlgorithm_Lab DigitalSignal_Lab

Committer:
ngtkien
Date:
Wed Aug 28 17:02:28 2019 +0000
Revision:
1:fc2dc08db78b
Parent:
0:ef139e18ca64
add several command

Who changed what in which revision?

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