DOGS-102 Graphic LCD module Example. Based on Igor Skochinsky's "DOGLCDDemo" program.

Dependencies:   DOG-S_GraphicLCD mbed

Fork of DOGLCDDemo by Igor Skochinsky

Revision:
1:b7a86d680935
Parent:
0:2a5dccfd318f
--- a/Graphics/Graphics.cpp	Thu Jan 14 00:49:39 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,117 +0,0 @@
-/* 
- * libmbed-graphics 2D and wireframe 3D graphics library for the MBED
- * microcontroller platform
- * Copyright (C) <2009> Michael Sheldon <mike@mikeasoft.com>
- * Optimized and adapted for AbstractLCD interface
- * Copyright (C) <2010> Igor Skochinsky <skochinsky@gmail.com>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#include "Graphics.h"
-
-// swap two values
-#define SWAP(a, b) (((a) == (b)) || (((a) ^= (b)), ((b) ^= (a)), ((a) ^= (b))))
-
-Graphics::Graphics(AbstractLCD *lcd)
-    : _lcd(lcd) { 
-    _cx3d = _lcd->width() / 2;
-    _cy3d = _lcd->height() / 2;
-    _cz3d = 150;
-}
-
-void Graphics::line(int x0, int y0, int x1, int y1, int colour) {
-    // Bresenham
-    //printf("line(%d, %d, %d, %d, %d)\n", x0, y0, x1, y1, colour);
-    bool steep = abs(y1 - y0) > abs(x1 - x0);
-    int temp, deltax, deltay, error, ystep, y, x;
-    if (steep) {
-        temp = y0;
-        y0 = x0;
-        x0 = temp;
-        temp = y1;
-        y1 = x1;
-        x1 = temp;
-    }
-    if (x0 > x1) {
-        temp = x1;
-        x1 = x0;
-        x0 = temp;
-        temp = y1;
-        y1 = y0;
-        y0 = temp;
-    }
-    deltax = x1 - x0;
-    deltay = abs(y1 - y0);
-    error = deltax / 2;
-    y = y0;
-    if (y0 < y1) {
-        ystep = 1;
-    } else {
-        ystep = -1;
-    }
-    for (x=x0; x<=x1; x++) {
-        if (steep) {
-            _lcd->pixel(y, x, colour);
-        } else {
-            _lcd->pixel(x, y, colour);
-        }
-        error = error - deltay;
-        if (error < 0) {
-            y = y + ystep;
-            error = error + deltax;
-        }
-    }
-}
-
-void Graphics::line3d(int x0, int y0, int z0, int x1, int y1, int z1, int colour) {
-    if (z0 + _cz3d <= 0 || z1 + _cz3d <= 0) {
-        // Behind the camera
-        return;
-    }
-    
-    int u0 = _cx3d + x0 * _cz3d / (z0 + _cz3d);
-    int v0 = _cy3d + y0 * _cz3d / (z0 + _cz3d);
-    int u1 = _cx3d + x1 * _cz3d / (z1 + _cz3d);
-    int v1 = _cy3d + y1 * _cz3d / (z1 + _cz3d);
-    line(u0, v0, u1, v1, colour);
-}
-
-void Graphics::circle(int cx, int cy, int radius, int colour) {
-    int x = 0;
-    int y = radius;
-    int d = 3 - (2 * radius);
-
-    while (x <= y) {
-        _lcd->pixel(cx + x, cy + y, colour);
-        _lcd->pixel(cx + y, cy + x, colour);
-        _lcd->pixel(cx - x, cy + y, colour);
-        _lcd->pixel(cx + y, cy - x, colour);
-        _lcd->pixel(cx - x, cy - y, colour);
-        _lcd->pixel(cx - y, cy - x, colour);
-        _lcd->pixel(cx + x, cy - y, colour);
-        _lcd->pixel(cx - y, cy + x, colour);
-
-        if (d<0)
-            d += (4 * x) + 6;
-        else
-        {
-            d += (4 * (x - y)) + 10;
-            y--;
-        }
-        x++;
-    }
-}