test public

Dependencies:   HttpServer_snapshot_mbed-os

Committer:
anhtran
Date:
Fri Oct 18 03:09:43 2019 +0000
Revision:
0:e9fd5575b10e
abc

Who changed what in which revision?

UserRevisionLine numberNew contents of line
anhtran 0:e9fd5575b10e 1 /* Copyright (c) 2016 dkato
anhtran 0:e9fd5575b10e 2 * SPDX-License-Identifier: Apache-2.0
anhtran 0:e9fd5575b10e 3 *
anhtran 0:e9fd5575b10e 4 * Licensed under the Apache License, Version 2.0 (the "License");
anhtran 0:e9fd5575b10e 5 * you may not use this file except in compliance with the License.
anhtran 0:e9fd5575b10e 6 * You may obtain a copy of the License at
anhtran 0:e9fd5575b10e 7 *
anhtran 0:e9fd5575b10e 8 * http://www.apache.org/licenses/LICENSE-2.0
anhtran 0:e9fd5575b10e 9 *
anhtran 0:e9fd5575b10e 10 * Unless required by applicable law or agreed to in writing, software
anhtran 0:e9fd5575b10e 11 * distributed under the License is distributed on an "AS IS" BASIS,
anhtran 0:e9fd5575b10e 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
anhtran 0:e9fd5575b10e 13 * See the License for the specific language governing permissions and
anhtran 0:e9fd5575b10e 14 * limitations under the License.
anhtran 0:e9fd5575b10e 15 */
anhtran 0:e9fd5575b10e 16 /**************************************************************************//**
anhtran 0:e9fd5575b10e 17 * @file AsciiFont.h
anhtran 0:e9fd5575b10e 18 * @brief AsciiFont API
anhtran 0:e9fd5575b10e 19 ******************************************************************************/
anhtran 0:e9fd5575b10e 20
anhtran 0:e9fd5575b10e 21 #ifndef ASCII_FONT_H
anhtran 0:e9fd5575b10e 22 #define ASCII_FONT_H
anhtran 0:e9fd5575b10e 23
anhtran 0:e9fd5575b10e 24 #include "mbed.h"
anhtran 0:e9fd5575b10e 25
anhtran 0:e9fd5575b10e 26 /** Draw the character of the ASCII code.
anhtran 0:e9fd5575b10e 27 *
anhtran 0:e9fd5575b10e 28 * Example
anhtran 0:e9fd5575b10e 29 * @code
anhtran 0:e9fd5575b10e 30 * #include "mbed.h"
anhtran 0:e9fd5575b10e 31 * #include "AsciiFont.h"
anhtran 0:e9fd5575b10e 32 *
anhtran 0:e9fd5575b10e 33 * #define WIDTH (12)
anhtran 0:e9fd5575b10e 34 * #define HEIGHT (16)
anhtran 0:e9fd5575b10e 35 * #define BYTE_PER_PIXEL (1u)
anhtran 0:e9fd5575b10e 36 * #define STRIDE (((WIDTH * BYTE_PER_PIXEL) + 7u) & ~7u) //multiple of 8
anhtran 0:e9fd5575b10e 37 *
anhtran 0:e9fd5575b10e 38 * uint8_t text_field[STRIDE * HEIGHT];
anhtran 0:e9fd5575b10e 39 *
anhtran 0:e9fd5575b10e 40 * //for debug
anhtran 0:e9fd5575b10e 41 * void print_text_field() {
anhtran 0:e9fd5575b10e 42 * int idx = 0;
anhtran 0:e9fd5575b10e 43 *
anhtran 0:e9fd5575b10e 44 * for (int i = 0; i < HEIGHT; i++) {
anhtran 0:e9fd5575b10e 45 * for (int j = 0; j < STRIDE; j++) {
anhtran 0:e9fd5575b10e 46 * printf("%02x", text_field[idx++]);
anhtran 0:e9fd5575b10e 47 * }
anhtran 0:e9fd5575b10e 48 * printf("\r\n");
anhtran 0:e9fd5575b10e 49 * }
anhtran 0:e9fd5575b10e 50 * printf("\r\n");
anhtran 0:e9fd5575b10e 51 * }
anhtran 0:e9fd5575b10e 52 *
anhtran 0:e9fd5575b10e 53 * int main() {
anhtran 0:e9fd5575b10e 54 * AsciiFont ascii_font(text_field, WIDTH, HEIGHT, STRIDE, BYTE_PER_PIXEL);
anhtran 0:e9fd5575b10e 55 *
anhtran 0:e9fd5575b10e 56 * ascii_font.Erase(0xcc);
anhtran 0:e9fd5575b10e 57 * ascii_font.DrawStr("AB", 0, 0, 0x11, 1);
anhtran 0:e9fd5575b10e 58 * ascii_font.DrawChar('C', AsciiFont::CHAR_PIX_WIDTH,
anhtran 0:e9fd5575b10e 59 * AsciiFont::CHAR_PIX_HEIGHT, 0x22, 1);
anhtran 0:e9fd5575b10e 60 * print_text_field(); //debug print
anhtran 0:e9fd5575b10e 61 *
anhtran 0:e9fd5575b10e 62 * ascii_font.Erase();
anhtran 0:e9fd5575b10e 63 * ascii_font.DrawStr("D", 0, 0, 0xef, 2);
anhtran 0:e9fd5575b10e 64 * print_text_field(); //debug print
anhtran 0:e9fd5575b10e 65 *
anhtran 0:e9fd5575b10e 66 * ascii_font.Erase(0x11, 6, 0, 6, 8);
anhtran 0:e9fd5575b10e 67 * print_text_field(); //debug print
anhtran 0:e9fd5575b10e 68 * }
anhtran 0:e9fd5575b10e 69 * @endcode
anhtran 0:e9fd5575b10e 70 */
anhtran 0:e9fd5575b10e 71
anhtran 0:e9fd5575b10e 72 class AsciiFont {
anhtran 0:e9fd5575b10e 73 public:
anhtran 0:e9fd5575b10e 74
anhtran 0:e9fd5575b10e 75 /** Constructor: Initializes AsciiFont.
anhtran 0:e9fd5575b10e 76 *
anhtran 0:e9fd5575b10e 77 * @param p_buf Text field address
anhtran 0:e9fd5575b10e 78 * @param width Text field width
anhtran 0:e9fd5575b10e 79 * @param height Text field height
anhtran 0:e9fd5575b10e 80 * @param stride Buffer stride
anhtran 0:e9fd5575b10e 81 * @param colour Background color
anhtran 0:e9fd5575b10e 82 * @param byte_per_pixel Byte per pixel
anhtran 0:e9fd5575b10e 83 */
anhtran 0:e9fd5575b10e 84 AsciiFont(uint8_t * p_buf, int width, int height, int stride, int byte_per_pixel, uint32_t const colour = 0);
anhtran 0:e9fd5575b10e 85
anhtran 0:e9fd5575b10e 86 /** Erase text field
anhtran 0:e9fd5575b10e 87 *
anhtran 0:e9fd5575b10e 88 */
anhtran 0:e9fd5575b10e 89 void Erase();
anhtran 0:e9fd5575b10e 90
anhtran 0:e9fd5575b10e 91 /** Erase text field
anhtran 0:e9fd5575b10e 92 *
anhtran 0:e9fd5575b10e 93 * @param colour Background color
anhtran 0:e9fd5575b10e 94 */
anhtran 0:e9fd5575b10e 95 void Erase(uint32_t const colour);
anhtran 0:e9fd5575b10e 96
anhtran 0:e9fd5575b10e 97 /** Erase text field
anhtran 0:e9fd5575b10e 98 *
anhtran 0:e9fd5575b10e 99 * @param colour Background color
anhtran 0:e9fd5575b10e 100 * @param x Erase start position of x coordinate
anhtran 0:e9fd5575b10e 101 * @param y Erase start position of y coordinate
anhtran 0:e9fd5575b10e 102 * @param width Erase field width
anhtran 0:e9fd5575b10e 103 * @param height Erase field height
anhtran 0:e9fd5575b10e 104 */
anhtran 0:e9fd5575b10e 105 void Erase(uint32_t const colour, int x, int y, int width, int height);
anhtran 0:e9fd5575b10e 106
anhtran 0:e9fd5575b10e 107 /** Draw a string
anhtran 0:e9fd5575b10e 108 *
anhtran 0:e9fd5575b10e 109 * @param str String
anhtran 0:e9fd5575b10e 110 * @param x Drawing start position of x coordinate
anhtran 0:e9fd5575b10e 111 * @param y Drawing start position of y coordinate
anhtran 0:e9fd5575b10e 112 * @param color Font color
anhtran 0:e9fd5575b10e 113 * @param font_size Font size (>=1)
anhtran 0:e9fd5575b10e 114 * @param max_char_num The maximum number of characters
anhtran 0:e9fd5575b10e 115 * @return The drawn number of characters
anhtran 0:e9fd5575b10e 116 */
anhtran 0:e9fd5575b10e 117 int DrawStr(const char * str, int x, int y, uint32_t const colour, int font_size = 1, uint16_t const max_char_num = 0xffff);
anhtran 0:e9fd5575b10e 118
anhtran 0:e9fd5575b10e 119 /** Draw a character
anhtran 0:e9fd5575b10e 120 *
anhtran 0:e9fd5575b10e 121 * @param x Drawing start position of x coordinate
anhtran 0:e9fd5575b10e 122 * @param y Drawing start position of y coordinate
anhtran 0:e9fd5575b10e 123 * @param color Font color
anhtran 0:e9fd5575b10e 124 * @param font_size Font size (>=1)
anhtran 0:e9fd5575b10e 125 * @return true if successfull
anhtran 0:e9fd5575b10e 126 */
anhtran 0:e9fd5575b10e 127 bool DrawChar(char c, int x, int y, uint32_t const colour, int font_size = 1);
anhtran 0:e9fd5575b10e 128
anhtran 0:e9fd5575b10e 129 /** The pixel width of a character. (font_size=1)
anhtran 0:e9fd5575b10e 130 *
anhtran 0:e9fd5575b10e 131 */
anhtran 0:e9fd5575b10e 132 static const int CHAR_PIX_WIDTH = 6;
anhtran 0:e9fd5575b10e 133
anhtran 0:e9fd5575b10e 134 /** The pixel height of a character. (font_size=1)
anhtran 0:e9fd5575b10e 135 *
anhtran 0:e9fd5575b10e 136 */
anhtran 0:e9fd5575b10e 137 static const int CHAR_PIX_HEIGHT = 8;
anhtran 0:e9fd5575b10e 138
anhtran 0:e9fd5575b10e 139 private:
anhtran 0:e9fd5575b10e 140 uint8_t * p_text_field;
anhtran 0:e9fd5575b10e 141 int max_width;
anhtran 0:e9fd5575b10e 142 int max_height;
anhtran 0:e9fd5575b10e 143 int buf_stride;
anhtran 0:e9fd5575b10e 144 int pixel_num;
anhtran 0:e9fd5575b10e 145 uint32_t background_colour;
anhtran 0:e9fd5575b10e 146 };
anhtran 0:e9fd5575b10e 147 #endif