hadif azli / Mbed 2 deprecated TEST123

Dependencies:   mbed Blynk

Committer:
lixianyu
Date:
Mon Jun 13 02:21:11 2016 +0000
Revision:
1:0e75de2a5d21
Parent:
0:d8f4c441e032
u8glib???????????????????????????Adafruit_GFX????OLED????????bitmap??????

Who changed what in which revision?

UserRevisionLine numberNew contents of line
lixianyu 1:0e75de2a5d21 1 /*
lixianyu 1:0e75de2a5d21 2
lixianyu 1:0e75de2a5d21 3 u8g_bitmap.c
lixianyu 1:0e75de2a5d21 4
lixianyu 1:0e75de2a5d21 5 Universal 8bit Graphics Library
lixianyu 1:0e75de2a5d21 6
lixianyu 1:0e75de2a5d21 7 Copyright (c) 2011, olikraus@gmail.com
lixianyu 1:0e75de2a5d21 8 All rights reserved.
lixianyu 1:0e75de2a5d21 9
lixianyu 1:0e75de2a5d21 10 Redistribution and use in source and binary forms, with or without modification,
lixianyu 1:0e75de2a5d21 11 are permitted provided that the following conditions are met:
lixianyu 1:0e75de2a5d21 12
lixianyu 1:0e75de2a5d21 13 * Redistributions of source code must retain the above copyright notice, this list
lixianyu 1:0e75de2a5d21 14 of conditions and the following disclaimer.
lixianyu 1:0e75de2a5d21 15
lixianyu 1:0e75de2a5d21 16 * Redistributions in binary form must reproduce the above copyright notice, this
lixianyu 1:0e75de2a5d21 17 list of conditions and the following disclaimer in the documentation and/or other
lixianyu 1:0e75de2a5d21 18 materials provided with the distribution.
lixianyu 1:0e75de2a5d21 19
lixianyu 1:0e75de2a5d21 20 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
lixianyu 1:0e75de2a5d21 21 CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
lixianyu 1:0e75de2a5d21 22 INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
lixianyu 1:0e75de2a5d21 23 MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
lixianyu 1:0e75de2a5d21 24 DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
lixianyu 1:0e75de2a5d21 25 CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
lixianyu 1:0e75de2a5d21 26 SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
lixianyu 1:0e75de2a5d21 27 NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
lixianyu 1:0e75de2a5d21 28 LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
lixianyu 1:0e75de2a5d21 29 CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
lixianyu 1:0e75de2a5d21 30 STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
lixianyu 1:0e75de2a5d21 31 ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
lixianyu 1:0e75de2a5d21 32 ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
lixianyu 1:0e75de2a5d21 33
lixianyu 1:0e75de2a5d21 34
lixianyu 1:0e75de2a5d21 35 */
lixianyu 1:0e75de2a5d21 36
lixianyu 1:0e75de2a5d21 37 #include "u8g.h"
lixianyu 1:0e75de2a5d21 38
lixianyu 1:0e75de2a5d21 39 void u8g_DrawHBitmap(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t cnt, const uint8_t *bitmap)
lixianyu 1:0e75de2a5d21 40 {
lixianyu 1:0e75de2a5d21 41 while( cnt > 0 ) {
lixianyu 1:0e75de2a5d21 42 u8g_Draw8Pixel(u8g, x, y, 0, *bitmap);
lixianyu 1:0e75de2a5d21 43 bitmap++;
lixianyu 1:0e75de2a5d21 44 cnt--;
lixianyu 1:0e75de2a5d21 45 x+=8;
lixianyu 1:0e75de2a5d21 46 }
lixianyu 1:0e75de2a5d21 47 }
lixianyu 1:0e75de2a5d21 48
lixianyu 1:0e75de2a5d21 49 void u8g_DrawBitmap(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t cnt, u8g_uint_t h, const uint8_t *bitmap)
lixianyu 1:0e75de2a5d21 50 {
lixianyu 1:0e75de2a5d21 51 if ( u8g_IsBBXIntersection(u8g, x, y, cnt*8, h) == 0 )
lixianyu 1:0e75de2a5d21 52 return;
lixianyu 1:0e75de2a5d21 53 while( h > 0 ) {
lixianyu 1:0e75de2a5d21 54 u8g_DrawHBitmap(u8g, x, y, cnt, bitmap);
lixianyu 1:0e75de2a5d21 55 bitmap += cnt;
lixianyu 1:0e75de2a5d21 56 y++;
lixianyu 1:0e75de2a5d21 57 h--;
lixianyu 1:0e75de2a5d21 58 }
lixianyu 1:0e75de2a5d21 59 }
lixianyu 1:0e75de2a5d21 60
lixianyu 1:0e75de2a5d21 61
lixianyu 1:0e75de2a5d21 62 void u8g_DrawHBitmapP(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t cnt, const u8g_pgm_uint8_t *bitmap)
lixianyu 1:0e75de2a5d21 63 {
lixianyu 1:0e75de2a5d21 64 while( cnt > 0 ) {
lixianyu 1:0e75de2a5d21 65 u8g_Draw8Pixel(u8g, x, y, 0, u8g_pgm_read(bitmap));
lixianyu 1:0e75de2a5d21 66 bitmap++;
lixianyu 1:0e75de2a5d21 67 cnt--;
lixianyu 1:0e75de2a5d21 68 x+=8;
lixianyu 1:0e75de2a5d21 69 }
lixianyu 1:0e75de2a5d21 70 }
lixianyu 1:0e75de2a5d21 71
lixianyu 1:0e75de2a5d21 72 void u8g_DrawBitmapP(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t cnt, u8g_uint_t h, const u8g_pgm_uint8_t *bitmap)
lixianyu 1:0e75de2a5d21 73 {
lixianyu 1:0e75de2a5d21 74 if ( u8g_IsBBXIntersection(u8g, x, y, cnt*8, h) == 0 )
lixianyu 1:0e75de2a5d21 75 return;
lixianyu 1:0e75de2a5d21 76 while( h > 0 ) {
lixianyu 1:0e75de2a5d21 77 u8g_DrawHBitmapP(u8g, x, y, cnt, bitmap);
lixianyu 1:0e75de2a5d21 78 bitmap += cnt;
lixianyu 1:0e75de2a5d21 79 y++;
lixianyu 1:0e75de2a5d21 80 h--;
lixianyu 1:0e75de2a5d21 81 }
lixianyu 1:0e75de2a5d21 82 }
lixianyu 0:d8f4c441e032 83
lixianyu 1:0e75de2a5d21 84 /*=========================================================================*/
lixianyu 1:0e75de2a5d21 85
lixianyu 1:0e75de2a5d21 86 static void u8g_DrawHXBM(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t w, const uint8_t *bitmap)
lixianyu 1:0e75de2a5d21 87 {
lixianyu 1:0e75de2a5d21 88 uint8_t d;
lixianyu 1:0e75de2a5d21 89 x+=7;
lixianyu 1:0e75de2a5d21 90 while( w >= 8 ) {
lixianyu 1:0e75de2a5d21 91 u8g_Draw8Pixel(u8g, x, y, 2, *bitmap);
lixianyu 1:0e75de2a5d21 92 bitmap++;
lixianyu 1:0e75de2a5d21 93 w-= 8;
lixianyu 1:0e75de2a5d21 94 x+=8;
lixianyu 1:0e75de2a5d21 95 }
lixianyu 1:0e75de2a5d21 96 if ( w > 0 ) {
lixianyu 1:0e75de2a5d21 97 d = *bitmap;
lixianyu 1:0e75de2a5d21 98 x -= 7;
lixianyu 1:0e75de2a5d21 99 do {
lixianyu 1:0e75de2a5d21 100 if ( d & 1 )
lixianyu 1:0e75de2a5d21 101 u8g_DrawPixel(u8g, x, y);
lixianyu 1:0e75de2a5d21 102 x++;
lixianyu 1:0e75de2a5d21 103 w--;
lixianyu 1:0e75de2a5d21 104 d >>= 1;
lixianyu 1:0e75de2a5d21 105 } while ( w > 0 );
lixianyu 1:0e75de2a5d21 106 }
lixianyu 1:0e75de2a5d21 107 }
lixianyu 1:0e75de2a5d21 108
lixianyu 1:0e75de2a5d21 109 void u8g_DrawXBM(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t w, u8g_uint_t h, const uint8_t *bitmap)
lixianyu 1:0e75de2a5d21 110 {
lixianyu 1:0e75de2a5d21 111 u8g_uint_t b;
lixianyu 1:0e75de2a5d21 112 b = w;
lixianyu 1:0e75de2a5d21 113 b += 7;
lixianyu 1:0e75de2a5d21 114 b >>= 3;
lixianyu 1:0e75de2a5d21 115
lixianyu 1:0e75de2a5d21 116 if ( u8g_IsBBXIntersection(u8g, x, y, w, h) == 0 )
lixianyu 1:0e75de2a5d21 117 return;
lixianyu 1:0e75de2a5d21 118
lixianyu 1:0e75de2a5d21 119 while( h > 0 ) {
lixianyu 1:0e75de2a5d21 120 u8g_DrawHXBM(u8g, x, y, w, bitmap);
lixianyu 1:0e75de2a5d21 121 bitmap += b;
lixianyu 1:0e75de2a5d21 122 y++;
lixianyu 1:0e75de2a5d21 123 h--;
lixianyu 1:0e75de2a5d21 124 }
lixianyu 1:0e75de2a5d21 125 }
lixianyu 1:0e75de2a5d21 126
lixianyu 1:0e75de2a5d21 127 static void u8g_DrawHXBMP(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t w, const u8g_pgm_uint8_t *bitmap)
lixianyu 1:0e75de2a5d21 128 {
lixianyu 1:0e75de2a5d21 129 uint8_t d;
lixianyu 1:0e75de2a5d21 130 x+=7;
lixianyu 1:0e75de2a5d21 131 while( w >= 8 ) {
lixianyu 1:0e75de2a5d21 132 u8g_Draw8Pixel(u8g, x, y, 2, u8g_pgm_read(bitmap));
lixianyu 1:0e75de2a5d21 133 bitmap++;
lixianyu 1:0e75de2a5d21 134 w-= 8;
lixianyu 1:0e75de2a5d21 135 x+=8;
lixianyu 1:0e75de2a5d21 136 }
lixianyu 1:0e75de2a5d21 137 if ( w > 0 ) {
lixianyu 1:0e75de2a5d21 138 d = u8g_pgm_read(bitmap);
lixianyu 1:0e75de2a5d21 139 x -= 7;
lixianyu 1:0e75de2a5d21 140 do {
lixianyu 1:0e75de2a5d21 141 if ( d & 1 )
lixianyu 1:0e75de2a5d21 142 u8g_DrawPixel(u8g, x, y);
lixianyu 1:0e75de2a5d21 143 x++;
lixianyu 1:0e75de2a5d21 144 w--;
lixianyu 1:0e75de2a5d21 145 d >>= 1;
lixianyu 1:0e75de2a5d21 146 } while ( w > 0 );
lixianyu 1:0e75de2a5d21 147 }
lixianyu 1:0e75de2a5d21 148 }
lixianyu 1:0e75de2a5d21 149
lixianyu 1:0e75de2a5d21 150 void u8g_DrawXBMP(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t w, u8g_uint_t h, const u8g_pgm_uint8_t *bitmap)
lixianyu 1:0e75de2a5d21 151 {
lixianyu 1:0e75de2a5d21 152 u8g_uint_t b;
lixianyu 1:0e75de2a5d21 153 b = w;
lixianyu 1:0e75de2a5d21 154 b += 7;
lixianyu 1:0e75de2a5d21 155 b >>= 3;
lixianyu 1:0e75de2a5d21 156
lixianyu 1:0e75de2a5d21 157 if ( u8g_IsBBXIntersection(u8g, x, y, w, h) == 0 )
lixianyu 1:0e75de2a5d21 158 return;
lixianyu 1:0e75de2a5d21 159 while( h > 0 ) {
lixianyu 1:0e75de2a5d21 160 u8g_DrawHXBMP(u8g, x, y, w, bitmap);
lixianyu 1:0e75de2a5d21 161 bitmap += b;
lixianyu 1:0e75de2a5d21 162 y++;
lixianyu 1:0e75de2a5d21 163 h--;
lixianyu 1:0e75de2a5d21 164 }
lixianyu 1:0e75de2a5d21 165 }
lixianyu 1:0e75de2a5d21 166