This is an automated email from the git hooks/post-receive script.
git pushed a commit to branch master
in repository legacy-imlib2.
View the commit online.
commit 29397453e40490d75540f59bb8287c5092f32784
Author: Kim Woelders <k...@woelders.dk>
AuthorDate: Sat Aug 5 20:27:50 2023 +0200
scaling: Various trivial changes
---
src/lib/scale.c | 90 +++++++++++++++++++++++----------------------------------
1 file changed, 36 insertions(+), 54 deletions(-)
diff --git a/src/lib/scale.c b/src/lib/scale.c
index ac07b87..d3972cd 100644
--- a/src/lib/scale.c
+++ b/src/lib/scale.c
@@ -24,16 +24,12 @@ struct _imlib_scale_info {
#define YAP (yapoints[dyy + y])
static int *
-__imlib_CalcPoints(int sw, int dw, int b1, int b2)
+__imlib_CalcPoints(int sw, int dw_, int b1, int b2)
{
int *p, i;
- int val, inc, rv = 0;
+ int val, inc, dw, ss, dd;
- if (dw < 0)
- {
- dw = -dw;
- rv = 1;
- }
+ dw = (dw_ >= 0) ? dw_ : -dw_;
p = malloc(dw * sizeof(int));
if (!p)
@@ -48,19 +44,16 @@ __imlib_CalcPoints(int sw, int dw, int b1, int b2)
}
/* Border 1 */
- val = 0;
- inc = 1 << 16;
for (i = 0; i < b1; i++)
- {
- p[i] = val >> 16;
- val += inc;
- }
+ p[i] = i;
/* Center */
- if (i < dw - b2)
+ ss = sw - (b1 + b2);
+ dd = dw - (b1 + b2);
+ if (dd > 0)
{
val = b1 << 16;
- inc = ((sw - (b1 + b2)) << 16) / (dw - (b1 + b2));
+ inc = (ss << 16) / dd;
for (; i < dw - b2; i++)
{
p[i] = val >> 16;
@@ -69,15 +62,11 @@ __imlib_CalcPoints(int sw, int dw, int b1, int b2)
}
/* Border 2 */
- val = (sw - b2) << 16;
- inc = 1 << 16;
+ val = sw - b2;
for (; i < dw; i++)
- {
- p[i] = val >> 16;
- val += inc;
- }
+ p[i] = val++;
- if (rv)
+ if (dw_ < 0)
for (i = dw / 2; --i >= 0;)
{
int tmp = p[i];
@@ -90,22 +79,18 @@ __imlib_CalcPoints(int sw, int dw, int b1, int b2)
}
static int *
-__imlib_CalcApoints(int s, int d, int b1, int b2, int up)
+__imlib_CalcApoints(int sw, int dw_, int b1, int b2, int up)
{
- int *p, i, rv = 0;
- int val, inc;
+ int *p, i;
+ int val, inc, dw, ss, dd;
- if (d < 0)
- {
- rv = 1;
- d = -d;
- }
+ dw = (dw_ >= 0) ? dw_ : -dw_;
- p = malloc(d * sizeof(int));
+ p = malloc(dw * sizeof(int));
if (!p)
return NULL;
- val = MIN(s, d);
+ val = MIN(sw, dw);
inc = b1 + b2;
if (val < inc)
{
@@ -113,6 +98,8 @@ __imlib_CalcApoints(int s, int d, int b1, int b2, int up)
b2 = val - b1;
}
+ ss = sw - (b1 + b2);
+ dd = dw - (b1 + b2);
if (up)
{
/* Scaling up */
@@ -122,25 +109,21 @@ __imlib_CalcApoints(int s, int d, int b1, int b2, int up)
p[i] = 0;
/* Center */
- if (d > b1 + b2)
+ if (dd > 0)
{
- int ss, dd;
-
- ss = s - (b1 + b2);
- dd = d - (b1 + b2);
val = 0;
inc = (ss << 16) / dd;
- for (; i < d - b2; i++)
+ for (; i < dw - b2; i++)
{
p[i] = (val >> 8) - ((val >> 8) & 0xffffff00);
- if (((val >> 16) + b1) >= (s - 1))
+ if (((val >> 16) + b1) >= (sw - 1))
p[i] = 0;
val += inc;
}
}
/* Border 2 */
- for (; i < d; i++)
+ for (; i < dw; i++)
p[i] = 0;
}
else
@@ -152,16 +135,14 @@ __imlib_CalcApoints(int s, int d, int b1, int b2, int up)
p[i] = (1 << (16 + 14)) + (1 << 14);
/* Center */
- if (d > b1 + b2)
+ if (dd > 0)
{
- int ss, dd, ap, Cp;
+ int ap, Cp;
- ss = s - (b1 + b2);
- dd = d - (b1 + b2);
val = 0;
inc = (ss << 16) / dd;
Cp = ((dd << 14) / ss) + 1;
- for (; i < d - b2; i++)
+ for (; i < dw - b2; i++)
{
ap = ((0x100 - ((val >> 8) & 0xff)) * Cp) >> 8;
p[i] = ap | (Cp << 16);
@@ -170,18 +151,18 @@ __imlib_CalcApoints(int s, int d, int b1, int b2, int up)
}
/* Border 2 */
- for (; i < d; i++)
+ for (; i < dw; i++)
p[i] = (1 << (16 + 14)) + (1 << 14);
}
- if (rv)
+ if (dw_ < 0)
{
- for (i = d / 2; --i >= 0;)
+ for (i = dw / 2; --i >= 0;)
{
int tmp = p[i];
- p[i] = p[d - i - 1];
- p[d - i - 1] = tmp;
+ p[i] = p[dw - i - 1];
+ p[dw - i - 1] = tmp;
}
}
@@ -232,13 +213,14 @@ __imlib_CalcScaleInfo(ImlibImage * im, int sw, int sh, int dw, int dh, bool aa)
if (aa)
{
- isi->xapoints = __imlib_CalcApoints(im->w, scw, im->border.left,
- im->border.right, isi->xup_yup & 1);
+ isi->xapoints = __imlib_CalcApoints(im->w, scw,
+ im->border.left, im->border.right,
+ isi->xup_yup & 1);
if (!isi->xapoints)
goto bail;
- isi->yapoints = __imlib_CalcApoints(im->h, sch, im->border.top,
- im->border.bottom,
+ isi->yapoints = __imlib_CalcApoints(im->h, sch,
+ im->border.top, im->border.bottom,
isi->xup_yup & 2);
if (!isi->yapoints)
goto bail;
--
To stop receiving notification emails like this one, please contact
the administrator of this repository.