From 95dcc1402599690d4bbd3f55b1651efb5422cc97 Mon Sep 17 00:00:00 2001 From: Yourtion Date: Mon, 16 May 2016 10:54:13 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E9=AB=98=E7=AA=97=E5=8F=A3=E7=A7=BB?= =?UTF-8?q?=E5=8A=A8=E9=80=9F=E5=BA=A6=EF=BC=881=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 26_day/sheet.c | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/26_day/sheet.c b/26_day/sheet.c index a51c756..eb2a10b 100644 --- a/26_day/sheet.c +++ b/26_day/sheet.c @@ -75,14 +75,26 @@ void sheet_refreshmap(struct SHTCTL *ctl, int vx0, int vy0, int vx1, int vy1, in if (by0 < 0) { by0 = 0; } if (bx1 > sht->bxsize) { bx1 = sht->bxsize; } if (by1 > sht->bysize) { by1 = sht->bysize; } - for (by = by0; by < by1; by++) { - vy = sht->vy0 + by; - for (bx = bx0; bx < bx1; bx++) { - vx = sht->vx0 + bx; - if (buf[by * sht->bxsize + bx] != sht->col_inv) { + if (sht->col_inv == -1) { + /*无透明色图层专用的高速版*/ + for (by = by0; by < by1; by++) { + vy = sht->vy0 + by; + for (bx = bx0; bx < bx1; bx++) { + vx = sht->vx0 + bx; map[vy * ctl->xsize + vx] = sid; } } + } else { + /*有透明色图层用的普通版*/ + for (by = by0; by < by1; by++) { + vy = sht->vy0 + by; + for (bx = bx0; bx < bx1; bx++) { + vx = sht->vx0 + bx; + if (buf[by * sht->bxsize + bx] != sht->col_inv) { + map[vy * ctl->xsize + vx] = sid; + } + } + } } } return;