Main #15

Merged
gronod merged 34 commits from main into development 2026-08-25 22:57:46 +01:00
100 changed files with 2190 additions and 31 deletions
+10 -5
View File
@@ -16,11 +16,11 @@ jobs:
strategy:
matrix:
include:
- os: macos-13
- os: macos-15-intel
arch: x86_64
machtype: x86_64-apple-darwin
artifact: osx10.6_x86_64_bin
- os: macos-latest
- os: macos-15
arch: arm64
machtype: arm64-apple-darwin
artifact: macOS_arm64_bin
@@ -30,16 +30,21 @@ jobs:
- name: Checkout repository
uses: actions/checkout@v4
- name: Install Dependencies
- name: Install ftjam
run: |
brew install ftjam
wget -q -O ftjam.tar.gz https://sourceforge.net/projects/freetype/files/ftjam/2.5.2/ftjam-2.5.2.tar.gz/download
tar -xzf ftjam.tar.gz
cd ftjam-2.5.2
make CC="cc -Wno-implicit-function-declaration -Wno-incompatible-pointer-types -Wno-int-conversion -Wno-implicit-int"
sudo cp bin.*/jam /usr/local/bin/jam
- name: Build ArgyllCMS
run: |
export OSTYPE=darwin
export MACHTYPE=${{ matrix.machtype }}
export HOSTTYPE=${{ matrix.arch }}
jam -q -fJambase -j$(sysctl -n hw.ncpu) -sBUILTIN_TIFF=true -sBUILTIN_JPEG=true -sBUILTIN_PNG=true -sBUILTIN_Z=true -sBUILTIN_SSL=true install
export CCOPTFLAG="-O0"
jam -q -d2 -fJambase -j1 -sBUILTIN_TIFF=true -sBUILTIN_JPEG=true -sBUILTIN_PNG=true -sBUILTIN_Z=true -sBUILTIN_SSL=true install
- name: Smoke Tests
env:
+8 -8
View File
@@ -32,21 +32,20 @@ jobs:
git
make
mingw-w64-x86_64-gcc
unzip
zip
bison
- name: Install ftjam
run: |
wget https://github.com/kimgr/ftjam/archive/refs/tags/v2.5.3rc2.tar.gz
tar -xzf v2.5.3rc2.tar.gz
cd ftjam-2.5.3rc2
make
cp bin.*/jam.exe /usr/bin/jam.exe
wget -q -O ftjam-win32.zip https://sourceforge.net/projects/freetype/files/ftjam/2.5.2/ftjam-2.5.2-win32.zip/download
unzip ftjam-win32.zip
cp jam.exe /usr/bin/jam.exe
- name: Build ArgyllCMS
env:
COMPILER: MINGW64
run: |
jam -q -fJambase -j$(nproc) -sBUILTIN_TIFF=true -sBUILTIN_JPEG=true -sBUILTIN_PNG=true -sBUILTIN_Z=true -sBUILTIN_SSL=true install
export MINGW=$(cygpath -m /mingw64)
jam -q -fJambase -j1 -sBUILTIN_TIFF=true -sBUILTIN_JPEG=true -sBUILTIN_PNG=true -sBUILTIN_Z=true -sBUILTIN_SSL=true install
- name: Smoke Tests
env:
@@ -62,6 +61,7 @@ jobs:
env:
COMPILER: MINGW64
run: |
export MINGW=$(cygpath -m /mingw64)
./makepackagebin.sh
- name: Upload Artifact
+2
View File
@@ -747,6 +747,8 @@ void usage(char *diag) {
exit(1);
}
#include "ui.h"
int
main(int argc, char *argv[]) {
int fa, nfa; /* argument we're looking at */
+2
View File
@@ -86,6 +86,8 @@ double sl[65][4] = {
#define GAMRES 5.0 /* Default surface resolution */
#include "ui.h"
int
main(int argc, char *argv[]) {
int i, j, e;
File diff suppressed because it is too large Load Diff
+2
View File
@@ -55,6 +55,8 @@ void usage(char *diag) {
}
#include "ui.h"
int
main(int argc, char *argv[]) {
int fa,nfa; /* argument we're looking at */
+36 -18
View File
@@ -3531,7 +3531,7 @@ double *in /* input point (absolute)*/
) {
gtri *tp;
int j;
double ss, rv;
double ss, rv = -1.0;
double nin[3]; /* Normalised input vector */
//printf("~1 radial called with %f %f %f\n", in[0], in[1], in[2]);
@@ -3541,9 +3541,15 @@ double *in /* input point (absolute)*/
/* Compute vector length to center point */
for (ss = 0.0, j = 0; j < 3; j++)
ss += (in[j] - s->cent[j]) * (in[j] - s->cent[j]);
ss = 1.0/sqrt(ss); /* Normalising factor */
for (ss = 0.0, j = 0; j < 3; j++)
nin[j] = s->cent[j] + (in[j] - s->cent[j]) * ss;
ss = sqrt(ss);
if (ss > 1e-9) { /* Normalise to 1.0 */
for (j = 0; j < 3; j++)
nin[j] = s->cent[j] + (in[j] - s->cent[j]) / ss;
} else {
nin[0] = s->cent[0] + 1.0;
nin[1] = s->cent[1];
nin[2] = s->cent[2];
}
tp = s->tris;
FOR_ALL_ITEMS(gtri, tp) {
@@ -3600,8 +3606,15 @@ double *in /* input point (absolute)*/
//if (trace) printf("~1 Normalised in = %f %f %f\n", nin[0], nin[1], nin[2]);
rv = radial_point(s, s->lutree, nin);
if (rv < 0.0) {
error("gamut: radial internal error - failed to find triangle (rv %f)\n",rv);
if (rv < -1e-4 || rv > 1e6 || rv != rv) {
/* Failed to find a valid triangle via BSP (likely floating point fuzz
on parallel planes). Fall back to robust brute force search. */
double dummy_out[3];
rv = radial_bf(s, out ? out : dummy_out, in);
if (rv < 0.0 || rv != rv)
rv = 0.0;
} else if (rv < 0.0 || rv != rv) {
rv = 0.0;
}
if (out != NULL) {
@@ -3943,6 +3956,8 @@ double *nin /* Normalised center relative point */
) {
gtri *rv;
//if (trace) printf("~1 rad_pnt_tri: BSP 0x%x tag = %d, point %f %f %f\n", np,np->tag,nin[0],nin[1],nin[2]);
if (np == NULL)
return NULL;
if (np->tag == 1) { /* It's a BSP node */
gbspn *n = (gbspn *)np;
double ds;
@@ -3965,12 +3980,14 @@ double *nin /* Normalised center relative point */
return NULL; /* Hmm */
} else { /* It's a triangle or list of triangles */
int nt; /* Number of triangles in list */
gtri **tpp; /* Pointer to list of triangles */
int nt = 0; /* Number of triangles in list */
gtri **tpp = NULL; /* Pointer to list of triangles */
gtri *t_single;
int i, j;
if (np->tag == 2) { /* It's a triangle */
tpp = (gtri **)&np;
t_single = (gtri *)np;
tpp = &t_single;
nt = 1;
} else if (np->tag == 3) { /* It's a triangle list */
gbspl *n = (gbspl *)np;
@@ -4024,7 +4041,7 @@ double *nin /* Normalised center relative point */
/* If we failed to find a triangle, or the result was incorrect, do a */
/* brute force search to be sure of the result. */
if (t == NULL) {
error("rspl.radial: failed to find radial triangle\n");
return -1.0; /* Signal failure to caller for fallback */
}
/* Compute the intersection of the input vector with the triangle plane */
@@ -4032,10 +4049,7 @@ double *nin /* Normalised center relative point */
num = -(t->pe[0] * s->cent[0] + t->pe[1] * s->cent[1] + t->pe[2] * s->cent[2] + t->pe[3]);
denom = (t->pe[0] * nin[0] + t->pe[1] * nin[1] + t->pe[2] * nin[2]);
if (fabs(denom) < 1e-9) {
/* Hmm. The ray is paralell to the triangle ? */
error("radial_point: failed to intersect radial triangle, num %e, denom %e\n",num,denom);
}
rv = num/denom;
#ifdef ASSERTS
@@ -5064,6 +5078,8 @@ int *lu /* Number used in list */
}
#endif
if (np == NULL)
return;
if (np->tag == 1) { /* It's a BSP node */
int j;
gbspn *n = (gbspn *)np;
@@ -5208,13 +5224,15 @@ int *lu /* Number used in list */
return;
/* It's a list of triangles */
} else {
int nt; /* Number of triangles in list */
gtri **tpp; /* Pointer to list of triangles */
} else { /* It's a triangle or list of triangles */
int nt = 0; /* Number of triangles in list */
gtri **tpp = NULL; /* Pointer to list of triangles */
gtri *t_single;
int i, j;
if (np->tag == 2) { /* It's a triangle */
tpp = (gtri **)&np;
t_single = (gtri *)np;
tpp = &t_single;
nt = 1;
} else if (np->tag == 3) { /* It's a triangle list */
gbspl *n = (gbspl *)np;
+2
View File
@@ -169,6 +169,8 @@ static void set_default(gamdisp *gds, int n) {
static int g_vect_isect(gamut *s, double *p, double *p1, double *p2);
#include "ui.h"
int
main(int argc, char *argv[]) {
int fa, nfa, mfa; /* argument we're looking at */
+2
View File
@@ -975,6 +975,8 @@ J_COLOR_SPACE cspace
/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
#include "ui.h"
int
main(int argc, char *argv[]) {
int fa, nfa; /* argument we're looking at */
+2
View File
@@ -429,6 +429,8 @@ static void output_curves(
/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
#include "ui.h"
int
main(int argc, char *argv[]) {
int fa,nfa; /* argument we're looking at */
+2
View File
@@ -186,6 +186,8 @@ void output_curve(
out_vals[e] = in_vals[e];
}
#include "ui.h"
int
main(int argc, char *argv[]) {
int fa,nfa; /* argument we're looking at */
+1
View File
@@ -136,6 +136,7 @@ void usage(void) {
exit(1);
}
int
main(int argc, char *argv[]) {
int fa,nfa; /* argument we're looking at */
+2
View File
@@ -79,6 +79,8 @@ struct _tagsigpair {
int dir; /* 0 = none or out, 1 = in */
}; typedef struct _tagsigpair tagsigpair;
#include "ui.h"
int
main(int argc, char *argv[]) {
int fa,nfa; /* argument we're looking at */
+2
View File
@@ -47,6 +47,8 @@ usage(void) {
exit(1);
}
#include "ui.h"
int main(int argc, char *argv[])
{
int i;
+2
View File
@@ -52,6 +52,8 @@ void usage(char *diag, ...) {
exit(1);
}
#include "ui.h"
int
main(int argc, char *argv[]) {
int fa,nfa,mfa; /* argument we're looking at */
+2
View File
@@ -107,6 +107,8 @@ void usage(void) {
static void DE2RGB(double *out, double in);
#include "ui.h"
int
main(
int argc,
+2
View File
@@ -58,6 +58,8 @@ FILE *open_pat(char *filename);
int next_pat(FILE *fp, double *Lab);
void close_pat(FILE *fp);
#include "ui.h"
int main(int argc, char *argv[])
{
int i;
+2
View File
@@ -173,6 +173,8 @@ void calc_bc(edatas *ed) {
void usage(void);
#include "ui.h"
int main(int argc, char *argv[])
{
int i,j,k;
+2
View File
@@ -60,6 +60,8 @@ usage(void) {
exit(1);
}
#include "ui.h"
int main(int argc, char *argv[]) {
int fa,nfa; /* current argument we're looking at */
int verb = 0;
Executable → Regular
View File
Executable → Regular
View File
Executable → Regular
View File
Executable → Regular
View File
Executable → Regular
View File
Executable → Regular
View File
Executable → Regular
View File
Executable → Regular
View File
Executable → Regular
View File
View File
Executable → Regular
View File
Executable → Regular
View File
Executable → Regular
View File
Executable → Regular
View File
Executable → Regular
View File
Executable → Regular
View File
Executable → Regular
View File
Executable → Regular
View File
Executable → Regular
View File
Executable → Regular
View File
Executable → Regular
View File
Executable → Regular
View File
Executable → Regular
View File
Executable → Regular
View File
Executable → Regular
View File
Executable → Regular
View File
Executable → Regular
View File
Executable → Regular
View File
Executable → Regular
View File
Executable → Regular
View File
Executable → Regular
View File
Executable → Regular
View File
Executable → Regular
View File
Executable → Regular
View File
Executable → Regular
View File
Executable → Regular
View File
Executable → Regular
View File
Executable → Regular
View File
Executable → Regular
View File
Executable → Regular
View File
Executable → Regular
View File
Executable → Regular
View File
Executable → Regular
View File
Executable → Regular
View File
Executable → Regular
View File
Executable → Regular
View File
Executable → Regular
View File
Executable → Regular
View File
Executable → Regular
View File
Executable → Regular
View File
Executable → Regular
View File
Executable → Regular
View File
Executable → Regular
View File
Executable → Regular
View File
Executable → Regular
View File
Executable → Regular
View File
Executable → Regular
View File
Executable → Regular
View File
Executable → Regular
View File
Executable → Regular
View File
Executable → Regular
View File
Executable → Regular
View File
Executable → Regular
View File
Executable → Regular
View File
Executable → Regular
View File
Executable → Regular
View File
Executable → Regular
View File
Executable → Regular
View File
Executable → Regular
View File
Executable → Regular
View File
Executable → Regular
View File
Executable → Regular
View File
Executable → Regular
View File
Executable → Regular
View File
Executable → Regular
View File
Executable → Regular
View File
Executable → Regular
View File
+2
View File
@@ -78,6 +78,8 @@ struct _inpinfo {
cgats *c;
}; typedef struct _inpinfo inpinfo;
#include "ui.h"
int main(int argc, char *argv[]) {
int fa,nfa; /* current argument we're looking at */
int verb = 0;
+2
View File
@@ -44,6 +44,8 @@ static void usage(char *diag, ...) {
exit(1);
}
#include "ui.h"
int main(int argc, char *argv[]) {
int fa, nfa;
int verb = 0;
+2
View File
@@ -72,6 +72,8 @@ usage(int level) {
exit(1);
}
#include "ui.h"
int main(int argc, char *argv[])
{
int fa,nfa; /* current argument we're looking at */
+2
View File
@@ -121,6 +121,8 @@ static void domodel(synthmodel *p, double *out, double *in) {
}
}
#include "ui.h"
int main(int argc, char *argv[]) {
int i, j, rv = 0;
int fa,nfa; /* current argument we're looking at */