X-Git-Url: http://git.mutantstargoat.com?a=blobdiff_plain;f=src%2Fgfx.cc;h=b72e43bcf1fa67788a349c72366e73a6379aacde;hb=9261ecb0ad85bdf8b21e17b7309ddaeb76a57d96;hp=1da29539767792a7823f303ad0bc70abed2473a9;hpb=59cd3a77c4517e387f4c2e21e8b62a9017370116;p=winnie diff --git a/src/gfx.cc b/src/gfx.cc index 1da2953..b72e43b 100644 --- a/src/gfx.cc +++ b/src/gfx.cc @@ -1,19 +1,28 @@ -#include +/* +winnie - an experimental window system -#include "geom.h" -#include "gfx.h" +Copyright (C) 2013 Eleni Maria Stea -static Rect clipping_rect; +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. -void set_clipping_rect(const Rect &rect) -{ - clipping_rect = rect_intersection(rect, get_screen_size()); -} +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. -const Rect &get_clipping_rect() -{ - return clipping_rect; -} +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 "geom.h" +#include "gfx.h" void clear_screen(int r, int g, int b) { @@ -25,6 +34,7 @@ void fill_rect(const Rect &rect, int r, int g, int b) { Rect drect = rect; Rect screen_rect = get_screen_size(); + Rect clipping_rect = get_clipping_rect(); if(drect.x < clipping_rect.x) { drect.width -= clipping_rect.x - drect.x; @@ -58,6 +68,9 @@ void fill_rect(const Rect &rect, int r, int g, int b) void blit(unsigned char *src_img, const Rect &src_rect, unsigned char* dest_img, const Rect &dest_rect, int dest_x, int dest_y) { + int red_offs, green_offs, blue_offs; + get_rgb_order(&red_offs, &green_offs, &blue_offs); + Rect irect = rect_intersection(get_clipping_rect(), dest_rect); int width = src_rect.width; @@ -93,7 +106,11 @@ void blit(unsigned char *src_img, const Rect &src_rect, unsigned char* dest_img, unsigned char *dptr = dest_img + (dest_y * dest_rect.width + dest_x) * 4; for(int i=0; i