X-Git-Url: http://git.mutantstargoat.com?p=winnie;a=blobdiff_plain;f=src%2Fpixmap.cc;fp=src%2Fpixmap.cc;h=0000000000000000000000000000000000000000;hp=8e50fa3caba353c843abbb9b4ce616a35f63edef;hb=b4c8d68e0357683cec82fb8a9c5a4447155b3192;hpb=9261ecb0ad85bdf8b21e17b7309ddaeb76a57d96 diff --git a/src/pixmap.cc b/src/pixmap.cc deleted file mode 100644 index 8e50fa3..0000000 --- a/src/pixmap.cc +++ /dev/null @@ -1,177 +0,0 @@ -/* -winnie - an experimental window system - -Copyright (C) 2013 Eleni Maria Stea - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 3 of the License, or -(at your option) any later version. - -This program 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 General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . - -Author: Eleni Maria Stea -*/ - -#include -#include -#include -#include "pixmap.h" - -Pixmap::Pixmap() -{ - width = height = 0; - pixels = 0; -} - -Pixmap::Pixmap(const Pixmap &pixmap) -{ - width = height = 0; - pixels = 0; - set_image(pixmap.width, pixmap.height, pixmap.pixels); -} - -Pixmap &Pixmap::operator=(const Pixmap &pixmap) -{ - if(this != &pixmap) { - set_image(pixmap.width, pixmap.height, pixmap.pixels); - } - - return *this; -} - -Pixmap::~Pixmap() -{ - if(pixels) { - delete [] pixels; - } -} - -int Pixmap::get_width() const -{ - return width; -} - -int Pixmap::get_height() const -{ - return height; -} - -Rect Pixmap::get_rect() const -{ - Rect rect(0, 0, width, height); - return rect; -} - -bool Pixmap::set_image(int x, int y, unsigned char *pix) -{ - delete [] pixels; - - pixels = new unsigned char[x * y * 4]; - width = x; - height = y; - - if(pix) { - memcpy(pixels, pix, x * y * 4); - } - return true; -} - -const unsigned char *Pixmap::get_image() const -{ - return pixels; -} - -unsigned char *Pixmap::get_image() -{ - return pixels; -} - -bool Pixmap::load(const char *fname) -{ - FILE *fp; - int hdrline = 0; - - if(!(fp = fopen(fname, "rb"))) { - fprintf(stderr, "failed to open pixmap: %s: %s\n", fname, strerror(errno)); - return false; - } - - /* read ppm header */ - while(hdrline < 3) { - char buf[64]; - - if(!fgets(buf, sizeof buf, fp)) - goto err; - - /* skip comments */ - if(buf[0] == '#') - continue; - - switch(hdrline++) { - case 0: - /* first header line should be P6 */ - if(strcmp(buf, "P6\n") != 0) - goto err; - break; - - case 1: - /* second header line contains the pixmap dimensions */ - if(sscanf(buf, "%d %d", &width, &height) != 2) - goto err; - break; - } - } - - set_image(width, height, 0); - - for(int i=0; i