VERSIÓ 1.0.1
- [FIX] view.clip() calculaba mal el ample i el alt de la zona clipada. - [FIX] view.origin() funcionava al reves.
This commit is contained in:
15
mini.cpp
15
mini.cpp
@@ -268,7 +268,10 @@ int surfh(uint8_t surface) {
|
|||||||
|
|
||||||
void recalculate_clip()
|
void recalculate_clip()
|
||||||
{
|
{
|
||||||
ds::clip[0] = ds::clp[0]; ds::clip[1] = ds::clp[1]; ds::clip[2] = ds::clp[2]-ds::clp[0]-1; ds::clip[3] = ds::clp[3]-ds::clp[1]-1;
|
ds::clip[0] = ds::clp[0];
|
||||||
|
ds::clip[1] = ds::clp[1];
|
||||||
|
ds::clip[2] = ds::clp[2]+ds::clp[0]-1;
|
||||||
|
ds::clip[3] = ds::clp[3]+ds::clp[1]-1;
|
||||||
if (ds::clip[0]<0) ds::clip[0]=0;
|
if (ds::clip[0]<0) ds::clip[0]=0;
|
||||||
if (ds::clip[1]<0) ds::clip[1]=0;
|
if (ds::clip[1]<0) ds::clip[1]=0;
|
||||||
if (ds::clip[2]>=dest_surface->w) ds::clip[2]=dest_surface->w-1;
|
if (ds::clip[2]>=dest_surface->w) ds::clip[2]=dest_surface->w-1;
|
||||||
@@ -519,7 +522,7 @@ int main(int argc,char*argv[]){
|
|||||||
}
|
}
|
||||||
|
|
||||||
void simple_pset(int x, int y, uint8_t color) {
|
void simple_pset(int x, int y, uint8_t color) {
|
||||||
x -= ds::origin[0]; y -= ds::origin[1];
|
x += ds::origin[0]; y += ds::origin[1];
|
||||||
if (x < ds::clip[0] || x > ds::clip[2] || y < ds::clip[1] || y > ds::clip[3]) return;
|
if (x < ds::clip[0] || x > ds::clip[2] || y < ds::clip[1] || y > ds::clip[3]) return;
|
||||||
if (x < 0 || x >= dest_surface->w || y < 0 || y >= dest_surface->h) return;
|
if (x < 0 || x >= dest_surface->w || y < 0 || y >= dest_surface->h) return;
|
||||||
DEST(x, y) = color;
|
DEST(x, y) = color;
|
||||||
@@ -623,7 +626,7 @@ void palt(uint8_t col, bool t) {
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
void pset(int x, int y) {
|
void pset(int x, int y) {
|
||||||
x -= ds::origin[0]; y -= ds::origin[1];
|
x += ds::origin[0]; y += ds::origin[1];
|
||||||
if (x < ds::clip[0] || x > ds::clip[2] || y < ds::clip[1] || y > ds::clip[3]) return;
|
if (x < ds::clip[0] || x > ds::clip[2] || y < ds::clip[1] || y > ds::clip[3]) return;
|
||||||
do_pset(x,y);
|
do_pset(x,y);
|
||||||
}
|
}
|
||||||
@@ -634,7 +637,7 @@ void pset(int x, int y, uint8_t color) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
uint8_t pget(int x, int y) {
|
uint8_t pget(int x, int y) {
|
||||||
x -= ds::origin[0]; y -= ds::origin[1];
|
x += ds::origin[0]; y += ds::origin[1];
|
||||||
//if (x < 0 || x > (dest_surface->w-1) || y < 0 || y > (dest_surface->h-1)) return 0;
|
//if (x < 0 || x > (dest_surface->w-1) || y < 0 || y > (dest_surface->h-1)) return 0;
|
||||||
if (x < ds::clip[0] || x > ds::clip[2] || y < ds::clip[1] || y > ds::clip[3]) return 0;
|
if (x < ds::clip[0] || x > ds::clip[2] || y < ds::clip[1] || y > ds::clip[3]) return 0;
|
||||||
return DEST(x, y);
|
return DEST(x, y);
|
||||||
@@ -1073,7 +1076,7 @@ void map() { //int celx, int cely, int sx, int sy, uint8_t celw, uint8_t celh, u
|
|||||||
int celx = 0;
|
int celx = 0;
|
||||||
int cely = 0;
|
int cely = 0;
|
||||||
//if (celw <= 0 || celh <= 0 || celw >= TILES_WIDTH || celh >= TILES_HEIGHT) return;
|
//if (celw <= 0 || celh <= 0 || celw >= TILES_WIDTH || celh >= TILES_HEIGHT) return;
|
||||||
int sx = -ds::origin[0]; int sy = -ds::origin[1];
|
int sx = ds::origin[0]; int sy = ds::origin[1];
|
||||||
if (sx+celw*8 < ds::clip[0] || sx > ds::clip[2] || sy+celh*8 < ds::clip[1] || sy > ds::clip[3]) return;
|
if (sx+celw*8 < ds::clip[0] || sx > ds::clip[2] || sy+celh*8 < ds::clip[1] || sy > ds::clip[3]) return;
|
||||||
if (sx<0) {
|
if (sx<0) {
|
||||||
int diff = -sx/8;
|
int diff = -sx/8;
|
||||||
@@ -1087,7 +1090,7 @@ void map() { //int celx, int cely, int sx, int sy, uint8_t celw, uint8_t celh, u
|
|||||||
celh -= diff;
|
celh -= diff;
|
||||||
sy += diff*8;
|
sy += diff*8;
|
||||||
}
|
}
|
||||||
sx += ds::origin[0]; sy += ds::origin[1];
|
sx -= ds::origin[0]; sy -= ds::origin[1];
|
||||||
for (int y=0; y<celh; ++y) {
|
for (int y=0; y<celh; ++y) {
|
||||||
for (int x=0; x<celw; ++x) {
|
for (int x=0; x<celw; ++x) {
|
||||||
spr(mget(celx+x, cely+y), sx+x*8, sy+y*8);
|
spr(mget(celx+x, cely+y), sx+x*8, sy+y*8);
|
||||||
|
|||||||
Reference in New Issue
Block a user