1 /*
2  * This file is part of the Scale2x project.
3  *
4  * Copyright (C) 2003 Andrea Mazzoleni
5  *
6  * This program is free software; you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License as published by
8  * the Free Software Foundation; either version 2 of the License, or
9  * (at your option) any later version.
10  *
11  * This program is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14  * GNU General Public License for more details.
15  *
16  * You should have received a copy of the GNU General Public License
17  * along with this program; if not, write to the Free Software
18  * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
19  */
20 
21 #include "pixel.h"
22 
pixel_get(int x,int y,const unsigned char * pix,unsigned slice,unsigned pixel,int dx,int dy,int opt_tes)23 pixel_t pixel_get(int x, int y, const unsigned char* pix, unsigned slice, unsigned pixel, int dx, int dy, int opt_tes)
24 {
25 	const unsigned char* p;
26 	unsigned i;
27 	pixel_t v;
28 
29 	if (opt_tes) {
30 		if (x < 0)
31 			x += dx;
32 		if (x >= dx)
33 			x -= dx;
34 		if (y < 0)
35 			y += dy;
36 		if (y >= dy)
37 			y -= dy;
38 	} else {
39 		if (x < 0)
40 			x = 0;
41 		if (x >= dx)
42 			x = dx - 1;
43 		if (y < 0)
44 			y = 0;
45 		if (y >= dy)
46 			y = dy - 1;
47 	}
48 
49 	p = pix + (y * slice) + (x * pixel);
50 
51 	v = 0;
52 	for(i=0;i<pixel;++i)
53 		v |= ((pixel_t)p[i]) << (i*8);
54 
55 	return v;
56 }
57 
pixel_put(int x,int y,unsigned char * pix,unsigned slice,unsigned pixel,int dx,int dy,pixel_t v)58 void pixel_put(int x, int y, unsigned char* pix, unsigned slice, unsigned pixel, int dx, int dy, pixel_t v)
59 {
60 	unsigned char* p;
61 	unsigned i;
62 
63 	if (x < 0 || x >= dx)
64 		return;
65 	if (y < 0 || y >= dy)
66 		return;
67 
68 	p = pix + (y * slice) + (x * pixel);
69 
70 	for(i=0;i<pixel;++i) {
71 		p[i] = v >> (i*8);
72 	}
73 }
74