Skip to content

Commit 0db6dcc

Browse files
committed
.
2 parents 9b449aa + 3a11ed5 commit 0db6dcc

File tree

3 files changed

+64
-64
lines changed

3 files changed

+64
-64
lines changed

CImg.h

Lines changed: 62 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -6702,11 +6702,11 @@ namespace cimg_library {
67026702
// (so, this is **not** a classical rounding behavior!).
67036703
// This function is used by drawing methods, to get coherent rounded primitive coordinates.
67046704
// Beware, 'b' must be strictly positive!
6705-
template<typename T>
6706-
T inline round_div(const T a, const T b, const T hb) {
6707-
return b==1?a:a>=0?(a + hb)/b:-(hb - 1 - a)/b;
6705+
template<typename T, typename t>
6706+
t inline round_div(const T a, const t b, const t hb) {
6707+
return (t)(b==1?a:a>=0?(a + hb)/b:-(hb - 1 - a)/b);
67086708
}
6709-
#define cimg_rd(a,b) cimg::round_div(a,b,h##b)
6709+
#define cimg_rd(a,b,c) cimg::round_div((cimg_long)a*b,c,h##c)
67106710

67116711
//! Return rounded value.
67126712
/**
@@ -49776,7 +49776,7 @@ namespace cimg_library {
4977649776
for (int y = y0_cut; y!=y1_cut; y+=step) {
4977749777
const int
4977849778
t = cimg::abs(y - y0),
49779-
x = x0 + cimg_rd(t*x01,dy);
49779+
x = x0 + cimg_rd(t,x01,dy);
4978049780
if (x>=0 && x<=w1 && pattern&hatch) {
4978149781
T *const ptrd = is_horizontal?data(y,x):data(x,y);
4978249782
cimg_forC(*this,c) {
@@ -50503,8 +50503,8 @@ namespace cimg_library {
5050350503
for (int y = cy0; y<=cy2; ++y) {
5050450504
const longT yy0 = (longT)y - y0, yy1 = (longT)y - y1;
5050550505
longT
50506-
xm = y<y1?x0 + cimg_rd(dx01*yy0,dy01):x1 + cimg_rd(dx12*yy1,dy12),
50507-
xM = x0 + cimg_rd(dx02*yy0,dy02);
50506+
xm = y<y1?x0 + cimg_rd(dx01,yy0,dy01):x1 + cimg_rd(dx12,yy1,dy12),
50507+
xM = x0 + cimg_rd(dx02,yy0,dy02);
5050850508
if (xm>xM) cimg::swap(xm,xM);
5050950509
cimg_draw_scanline(xm,xM,y,color,opacity,cbs);
5051050510
}
@@ -50620,8 +50620,8 @@ namespace cimg_library {
5062050620
for (int y = cy0; y<=cy2; ++y) {
5062150621
const longT yy0 = (longT)y - y0, yy1 = (longT)y - y1;
5062250622
longT
50623-
xm = y<y1?x0 + cimg_rd(dx01*yy0,dy01):x1 + cimg_rd(dx12*yy1,dy12),
50624-
xM = x0 + cimg_rd(dx02*yy0,dy02);
50623+
xm = y<y1?x0 + cimg_rd(dx01,yy0,dy01):x1 + cimg_rd(dx12,yy1,dy12),
50624+
xM = x0 + cimg_rd(dx02,yy0,dy02);
5062550625
float
5062650626
izm = y<y1?(iz0 + diz01*yy0/dy01):(iz1 + diz12*yy1/dy12),
5062750627
izM = iz0 + diz02*yy0/dy02;
@@ -50700,8 +50700,8 @@ namespace cimg_library {
5070050700
for (int y = cy0; y<=cy2; ++y) {
5070150701
const longT yy0 = (longT)y - y0, yy1 = (longT)y - y1;
5070250702
longT
50703-
xm = y<y1?x0 + cimg_rd(dx01*yy0,dy01):x1 + cimg_rd(dx12*yy1,dy12),
50704-
xM = x0 + cimg_rd(dx02*yy0,dy02);
50703+
xm = y<y1?x0 + cimg_rd(dx01,yy0,dy01):x1 + cimg_rd(dx12,yy1,dy12),
50704+
xM = x0 + cimg_rd(dx02,yy0,dy02);
5070550705
float
5070650706
bsm = y<y1?(bs0 + dbs01*yy0/dy01):(bs1 + dbs12*yy1/dy12),
5070750707
bsM = bs0 + dbs02*yy0/dy02;
@@ -50773,8 +50773,8 @@ namespace cimg_library {
5077350773
for (int y = cy0; y<=cy2; ++y) {
5077450774
const longT yy0 = (longT)y - y0, yy1 = (longT)y - y1;
5077550775
longT
50776-
xm = y<y1?x0 + cimg_rd(dx01*yy0,dy01):x1 + cimg_rd(dx12*yy1,dy12),
50777-
xM = x0 + cimg_rd(dx02*yy0,dy02);
50776+
xm = y<y1?x0 + cimg_rd(dx01,yy0,dy01):x1 + cimg_rd(dx12,yy1,dy12),
50777+
xM = x0 + cimg_rd(dx02,yy0,dy02);
5077850778
float
5077950779
izm = y<y1?(iz0 + diz01*yy0/dy01):(iz1 + diz12*yy1/dy12),
5078050780
izM = iz0 + diz02*yy0/dy02,
@@ -50857,8 +50857,8 @@ namespace cimg_library {
5085750857
for (int y = cy0; y<=cy2; ++y) {
5085850858
const longT yy0 = (longT)y - y0, yy1 = (longT)y - y1;
5085950859
longT
50860-
xm = y<y1?x0 + cimg_rd(dx01*yy0,dy01):x1 + cimg_rd(dx12*yy1,dy12),
50861-
xM = x0 + cimg_rd(dx02*yy0,dy02);
50860+
xm = y<y1?x0 + cimg_rd(dx01,yy0,dy01):x1 + cimg_rd(dx12,yy1,dy12),
50861+
xM = x0 + cimg_rd(dx02,yy0,dy02);
5086250862
stc
5086350863
colorm = y<y1?(color0[c] + dcolor01*yy0/dy01):(color1[c] + dcolor12*yy1/dy12),
5086450864
colorM = color0[c] + dcolor02*yy0/dy02;
@@ -50942,12 +50942,12 @@ namespace cimg_library {
5094250942
for (int y = cy0; y<=cy2; ++y) {
5094350943
const longT yy0 = (longT)y - y0, yy1 = (longT)y - y1;
5094450944
longT
50945-
xm = y<y1?x0 + cimg_rd(dx01*yy0,dy01):x1 + cimg_rd(dx12*yy1,dy12),
50946-
xM = x0 + cimg_rd(dx02*yy0,dy02),
50947-
txm = y<y1?tx0 + cimg_rd(dtx01*yy0,dy01):tx1 + cimg_rd(dtx12*yy1,dy12),
50948-
txM = tx0 + cimg_rd(dtx02*yy0,dy02),
50949-
tym = y<y1?ty0 + cimg_rd(dty01*yy0,dy01):ty1 + cimg_rd(dty12*yy1,dy12),
50950-
tyM = ty0 + cimg_rd(dty02*yy0,dy02);
50945+
xm = y<y1?x0 + cimg_rd(dx01,yy0,dy01):x1 + cimg_rd(dx12,yy1,dy12),
50946+
xM = x0 + cimg_rd(dx02,yy0,dy02),
50947+
txm = y<y1?tx0 + cimg_rd(dtx01,yy0,dy01):tx1 + cimg_rd(dtx12,yy1,dy12),
50948+
txM = tx0 + cimg_rd(dtx02,yy0,dy02),
50949+
tym = y<y1?ty0 + cimg_rd(dty01,yy0,dy01):ty1 + cimg_rd(dty12,yy1,dy12),
50950+
tyM = ty0 + cimg_rd(dty02,yy0,dy02);
5095150951
if (xm>xM) cimg::swap(xm,xM,txm,txM,tym,tyM);
5095250952
if (xM>=0 && xm<=w1) {
5095350953
const int
@@ -51022,8 +51022,8 @@ namespace cimg_library {
5102251022
for (int y = cy0; y<=cy2; ++y) {
5102351023
const longT yy0 = (longT)y - y0, yy1 = (longT)y - y1;
5102451024
longT
51025-
xm = y<y1?x0 + cimg_rd(dx01*yy0,dy01):x1 + cimg_rd(dx12*yy1,dy12),
51026-
xM = x0 + cimg_rd(dx02*yy0,dy02);
51025+
xm = y<y1?x0 + cimg_rd(dx01,yy0,dy01):x1 + cimg_rd(dx12,yy1,dy12),
51026+
xM = x0 + cimg_rd(dx02,yy0,dy02);
5102751027
float
5102851028
izm = y<y1?(iz0 + diz01*yy0/dy01):(iz1 + diz12*yy1/dy12),
5102951029
izM = iz0 + diz02*yy0/dy02,
@@ -51116,8 +51116,8 @@ namespace cimg_library {
5111651116
for (int y = cy0; y<=cy2; ++y) {
5111751117
const longT yy0 = (longT)y - y0, yy1 = (longT)y - y1;
5111851118
longT
51119-
xm = y<y1?x0 + cimg_rd(dx01*yy0,dy01):x1 + cimg_rd(dx12*yy1,dy12),
51120-
xM = x0 + cimg_rd(dx02*yy0,dy02);
51119+
xm = y<y1?x0 + cimg_rd(dx01,yy0,dy01):x1 + cimg_rd(dx12,yy1,dy12),
51120+
xM = x0 + cimg_rd(dx02,yy0,dy02);
5112151121
float
5112251122
izm = y<y1?(iz0 + diz01*yy0/dy01):(iz1 + diz12*yy1/dy12),
5112351123
izM = iz0 + diz02*yy0/dy02,
@@ -51218,12 +51218,12 @@ namespace cimg_library {
5121851218
for (int y = cy0; y<=cy2; ++y) {
5121951219
const longT yy0 = (longT)y - y0, yy1 = (longT)y - y1;
5122051220
longT
51221-
xm = y<y1?x0 + cimg_rd(dx01*yy0,dy01):x1 + cimg_rd(dx12*yy1,dy12),
51222-
xM = x0 + cimg_rd(dx02*yy0,dy02),
51223-
lxm = y<y1?lx0 + cimg_rd(dlx01*yy0,dy01):lx1 + cimg_rd(dlx12*yy1,dy12),
51224-
lxM = lx0 + cimg_rd(dlx02*yy0,dy02),
51225-
lym = y<y1?ly0 + cimg_rd(dly01*yy0,dy01):ly1 + cimg_rd(dly12*yy1,dy12),
51226-
lyM = ly0 + cimg_rd(dly02*yy0,dy02);
51221+
xm = y<y1?x0 + cimg_rd(dx01,yy0,dy01):x1 + cimg_rd(dx12,yy1,dy12),
51222+
xM = x0 + cimg_rd(dx02,yy0,dy02),
51223+
lxm = y<y1?lx0 + cimg_rd(dlx01,yy0,dy01):lx1 + cimg_rd(dlx12,yy1,dy12),
51224+
lxM = lx0 + cimg_rd(dlx02,yy0,dy02),
51225+
lym = y<y1?ly0 + cimg_rd(dly01,yy0,dy01):ly1 + cimg_rd(dly12,yy1,dy12),
51226+
lyM = ly0 + cimg_rd(dly02,yy0,dy02);
5122751227
if (xm>xM) cimg::swap(xm,xM,lxm,lxM,lym,lyM);
5122851228
if (xM>=0 && xm<=w1) {
5122951229
const int
@@ -51306,12 +51306,12 @@ namespace cimg_library {
5130651306
for (int y = cy0; y<=cy2; ++y) {
5130751307
const longT yy0 = (longT)y - y0, yy1 = (longT)y - y1;
5130851308
longT
51309-
xm = y<y1?x0 + cimg_rd(dx01*yy0,dy01):x1 + cimg_rd(dx12*yy1,dy12),
51310-
xM = x0 + cimg_rd(dx02*yy0,dy02),
51311-
lxm = y<y1?lx0 + cimg_rd(dlx01*yy0,dy01):lx1 + cimg_rd(dlx12*yy1,dy12),
51312-
lxM = lx0 + cimg_rd(dlx02*yy0,dy02),
51313-
lym = y<y1?ly0 + cimg_rd(dly01*yy0,dy01):ly1 + cimg_rd(dly12*yy1,dy12),
51314-
lyM = ly0 + cimg_rd(dly02*yy0,dy02);
51309+
xm = y<y1?x0 + cimg_rd(dx01,yy0,dy01):x1 + cimg_rd(dx12,yy1,dy12),
51310+
xM = x0 + cimg_rd(dx02,yy0,dy02),
51311+
lxm = y<y1?lx0 + cimg_rd(dlx01,yy0,dy01):lx1 + cimg_rd(dlx12,yy1,dy12),
51312+
lxM = lx0 + cimg_rd(dlx02,yy0,dy02),
51313+
lym = y<y1?ly0 + cimg_rd(dly01,yy0,dy01):ly1 + cimg_rd(dly12,yy1,dy12),
51314+
lyM = ly0 + cimg_rd(dly02,yy0,dy02);
5131551315
float
5131651316
izm = y<y1?(iz0 + diz01*yy0/dy01):(iz1 + diz12*yy1/dy12),
5131751317
izM = iz0 + diz02*yy0/dy02;
@@ -51415,12 +51415,12 @@ namespace cimg_library {
5141551415
for (int y = cy0; y<=cy2; ++y) {
5141651416
const longT yy0 = (longT)y - y0, yy1 = (longT)y - y1;
5141751417
longT
51418-
xm = y<y1?x0 + cimg_rd(dx01*yy0,dy01):x1 + cimg_rd(dx12*yy1,dy12),
51419-
xM = x0 + cimg_rd(dx02*yy0,dy02),
51420-
txm = y<y1?tx0 + cimg_rd(dtx01*yy0,dy01):tx1 + cimg_rd(dtx12*yy1,dy12),
51421-
txM = tx0 + cimg_rd(dtx02*yy0,dy02),
51422-
tym = y<y1?ty0 + cimg_rd(dty01*yy0,dy01):ty1 + cimg_rd(dty12*yy1,dy12),
51423-
tyM = ty0 + cimg_rd(dty02*yy0,dy02);
51418+
xm = y<y1?x0 + cimg_rd(dx01,yy0,dy01):x1 + cimg_rd(dx12,yy1,dy12),
51419+
xM = x0 + cimg_rd(dx02,yy0,dy02),
51420+
txm = y<y1?tx0 + cimg_rd(dtx01,yy0,dy01):tx1 + cimg_rd(dtx12,yy1,dy12),
51421+
txM = tx0 + cimg_rd(dtx02,yy0,dy02),
51422+
tym = y<y1?ty0 + cimg_rd(dty01,yy0,dy01):ty1 + cimg_rd(dty12,yy1,dy12),
51423+
tyM = ty0 + cimg_rd(dty02,yy0,dy02);
5142451424
float
5142551425
bsm = y<y1?(bs0 + dbs01*yy0/dy01):(bs1 + dbs12*yy1/dy12),
5142651426
bsM = bs0 + dbs02*yy0/dy02;
@@ -51503,8 +51503,8 @@ namespace cimg_library {
5150351503
for (int y = cy0; y<=cy2; ++y) {
5150451504
const longT yy0 = (longT)y - y0, yy1 = (longT)y - y1;
5150551505
longT
51506-
xm = y<y1?x0 + cimg_rd(dx01*yy0,dy01):x1 + cimg_rd(dx12*yy1,dy12),
51507-
xM = x0 + cimg_rd(dx02*yy0,dy02);
51506+
xm = y<y1?x0 + cimg_rd(dx01,yy0,dy01):x1 + cimg_rd(dx12,yy1,dy12),
51507+
xM = x0 + cimg_rd(dx02,yy0,dy02);
5150851508
float
5150951509
izm = y<y1?(iz0 + diz01*yy0/dy01):(iz1 + diz12*yy1/dy12),
5151051510
izM = iz0 + diz02*yy0/dy02,
@@ -51602,8 +51602,8 @@ namespace cimg_library {
5160251602
for (int y = cy0; y<=cy2; ++y) {
5160351603
const longT yy0 = (longT)y - y0, yy1 = (longT)y - y1;
5160451604
longT
51605-
xm = y<y1?x0 + cimg_rd(dx01*yy0,dy01):x1 + cimg_rd(dx12*yy1,dy12),
51606-
xM = x0 + cimg_rd(dx02*yy0,dy02);
51605+
xm = y<y1?x0 + cimg_rd(dx01,yy0,dy01):x1 + cimg_rd(dx12,yy1,dy12),
51606+
xM = x0 + cimg_rd(dx02,yy0,dy02);
5160751607
float
5160851608
izm = y<y1?(iz0 + diz01*yy0/dy01):(iz1 + diz12*yy1/dy12),
5160951609
izM = iz0 + diz02*yy0/dy02,
@@ -51726,16 +51726,16 @@ namespace cimg_library {
5172651726
for (int y = cy0; y<=cy2; ++y) {
5172751727
const longT yy0 = (longT)y - y0, yy1 = (longT)y - y1;
5172851728
longT
51729-
xm = y<y1?x0 + cimg_rd(dx01*yy0,dy01):x1 + cimg_rd(dx12*yy1,dy12),
51730-
xM = x0 + cimg_rd(dx02*yy0,dy02),
51731-
txm = y<y1?tx0 + cimg_rd(dtx01*yy0,dy01):tx1 + cimg_rd(dtx12*yy1,dy12),
51732-
txM = tx0 + cimg_rd(dtx02*yy0,dy02),
51733-
tym = y<y1?ty0 + cimg_rd(dty01*yy0,dy01):ty1 + cimg_rd(dty12*yy1,dy12),
51734-
tyM = ty0 + cimg_rd(dty02*yy0,dy02),
51735-
lxm = y<y1?lx0 + cimg_rd(dlx01*yy0,dy01):lx1 + cimg_rd(dlx12*yy1,dy12),
51736-
lxM = lx0 + cimg_rd(dlx02*yy0,dy02),
51737-
lym = y<y1?ly0 + cimg_rd(dly01*yy0,dy01):ly1 + cimg_rd(dly12*yy1,dy12),
51738-
lyM = ly0 + cimg_rd(dly02*yy0,dy02);
51729+
xm = y<y1?x0 + cimg_rd(dx01,yy0,dy01):x1 + cimg_rd(dx12,yy1,dy12),
51730+
xM = x0 + cimg_rd(dx02,yy0,dy02),
51731+
txm = y<y1?tx0 + cimg_rd(dtx01,yy0,dy01):tx1 + cimg_rd(dtx12,yy1,dy12),
51732+
txM = tx0 + cimg_rd(dtx02,yy0,dy02),
51733+
tym = y<y1?ty0 + cimg_rd(dty01,yy0,dy01):ty1 + cimg_rd(dty12,yy1,dy12),
51734+
tyM = ty0 + cimg_rd(dty02,yy0,dy02),
51735+
lxm = y<y1?lx0 + cimg_rd(dlx01,yy0,dy01):lx1 + cimg_rd(dlx12,yy1,dy12),
51736+
lxM = lx0 + cimg_rd(dlx02,yy0,dy02),
51737+
lym = y<y1?ly0 + cimg_rd(dly01,yy0,dy01):ly1 + cimg_rd(dly12,yy1,dy12),
51738+
lyM = ly0 + cimg_rd(dly02,yy0,dy02);
5173951739
if (xm>xM) cimg::swap(xm,xM,txm,txM,tym,tyM,lxm,lxM,lym,lyM);
5174051740
if (xM>=0 && xm<=w1) {
5174151741
const int
@@ -51832,8 +51832,8 @@ namespace cimg_library {
5183251832
for (int y = cy0; y<=cy2; ++y) {
5183351833
const longT yy0 = (longT)y - y0, yy1 = (longT)y - y1;
5183451834
longT
51835-
xm = y<y1?x0 + cimg_rd(dx01*yy0,dy01):x1 + cimg_rd(dx12*yy1,dy12),
51836-
xM = x0 + cimg_rd(dx02*yy0,dy02);
51835+
xm = y<y1?x0 + cimg_rd(dx01,yy0,dy01):x1 + cimg_rd(dx12,yy1,dy12),
51836+
xM = x0 + cimg_rd(dx02,yy0,dy02);
5183751837
float
5183851838
izm = y<y1?(iz0 + diz01*yy0/dy01):(iz1 + diz12*yy1/dy12),
5183951839
izM = iz0 + diz02*yy0/dy02,
@@ -51955,8 +51955,8 @@ namespace cimg_library {
5195551955
for (int y = cy0; y<=cy2; ++y) {
5195651956
const longT yy0 = (longT)y - y0, yy1 = (longT)y - y1;
5195751957
longT
51958-
xm = y<y1?x0 + cimg_rd(dx01*yy0,dy01):x1 + cimg_rd(dx12*yy1,dy12),
51959-
xM = x0 + cimg_rd(dx02*yy0,dy02);
51958+
xm = y<y1?x0 + cimg_rd(dx01,yy0,dy01):x1 + cimg_rd(dx12,yy1,dy12),
51959+
xM = x0 + cimg_rd(dx02,yy0,dy02);
5196051960
float
5196151961
izm = y<y1?(iz0 + diz01*yy0/dy01):(iz1 + diz12*yy1/dy12),
5196251962
izM = iz0 + diz02*yy0/dy02,
@@ -52180,7 +52180,7 @@ namespace cimg_library {
5218052180
tend = tmax - (step==cimg::sign(y12));
5218152181
unsigned int y = (unsigned int)y0 - ymin;
5218252182
for (int t = 0; t<=tend; ++t, y+=step)
52183-
if (y<Xs._height) Xs(count[y]++,y) = x0 + cimg_rd(t*x01,tmax);
52183+
if (y<Xs._height) Xs(count[y]++,y) = x0 + cimg_rd(t,x01,tmax);
5218452184
}
5218552185
go_on = nn>n;
5218652186
n = nn;

html/header.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
<div class="header">
1717
<a href="index.html"><img alt="Logo" src="img/logo_header.jpg" class="center_image" style="margin-top:1em;"/></a>
1818
<h2 style="padding-bottom: 1em">
19-
Latest stable version: <b><a href="http://cimg.eu/files/CImg_3.7.0.zip">3.7.0</a></b> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Current pre-release: <b><a href="http://cimg.eu/files/CImg_latest.zip">3.7.1</a></b> (2026/02/25)
19+
Latest stable version: <b><a href="http://cimg.eu/files/CImg_3.7.0.zip">3.7.0</a></b> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Current pre-release: <b><a href="http://cimg.eu/files/CImg_latest.zip">3.7.1</a></b> (2026/02/26)
2020
</h2>
2121

2222
<hr/>

html/header_doxygen.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626
<div class="header">
2727
<a href="../index.html"><img alt="Logo" src="../img/logo_header.jpg" class="center_image" style="margin-top:1em;"/></a>
2828
<h2 style="padding-bottom: 1em">
29-
Latest stable version: <b><a href="http://cimg.eu/files/CImg_3.7.0.zip">3.7.0</a></b> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Current pre-release: <b><a href="http://cimg.eu/files/CImg_latest.zip">3.7.1</a></b> (2026/02/25)
29+
Latest stable version: <b><a href="http://cimg.eu/files/CImg_3.7.0.zip">3.7.0</a></b> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Current pre-release: <b><a href="http://cimg.eu/files/CImg_latest.zip">3.7.1</a></b> (2026/02/26)
3030
</h2>
3131

3232
<hr/>

0 commit comments

Comments
 (0)