summaryrefslogtreecommitdiff
path: root/util/cairo-script
diff options
context:
space:
mode:
Diffstat (limited to 'util/cairo-script')
-rw-r--r--[-rwxr-xr-x]util/cairo-script/.gitignore0
-rw-r--r--[-rwxr-xr-x]util/cairo-script/COPYING0
-rw-r--r--[-rwxr-xr-x]util/cairo-script/Makefile.am0
-rw-r--r--[-rwxr-xr-x]util/cairo-script/Makefile.sources0
-rw-r--r--[-rwxr-xr-x]util/cairo-script/Makefile.win320
-rw-r--r--[-rwxr-xr-x]util/cairo-script/cairo-script-file.c9
-rw-r--r--[-rwxr-xr-x]util/cairo-script/cairo-script-hash.c0
-rw-r--r--[-rwxr-xr-x]util/cairo-script/cairo-script-interpreter.c2
-rw-r--r--[-rwxr-xr-x]util/cairo-script/cairo-script-interpreter.h0
-rw-r--r--[-rwxr-xr-x]util/cairo-script/cairo-script-objects.c0
-rw-r--r--[-rwxr-xr-x]util/cairo-script/cairo-script-operators.c76
-rw-r--r--[-rwxr-xr-x]util/cairo-script/cairo-script-private.h0
-rw-r--r--[-rwxr-xr-x]util/cairo-script/cairo-script-scanner.c0
-rw-r--r--[-rwxr-xr-x]util/cairo-script/cairo-script-stack.c0
-rw-r--r--[-rwxr-xr-x]util/cairo-script/csi-bind.c0
-rw-r--r--[-rwxr-xr-x]util/cairo-script/csi-exec.c0
-rw-r--r--[-rwxr-xr-x]util/cairo-script/csi-replay.c0
-rw-r--r--[-rwxr-xr-x]util/cairo-script/csi-trace.c10
-rw-r--r--[-rwxr-xr-x]util/cairo-script/examples/Makefile.am0
-rw-r--r--[-rwxr-xr-x]util/cairo-script/examples/dragon.cs0
-rw-r--r--[-rwxr-xr-x]util/cairo-script/examples/hilbert.cs0
-rw-r--r--[-rwxr-xr-x]util/cairo-script/examples/infinichess.cs0
-rw-r--r--[-rwxr-xr-x]util/cairo-script/examples/interference.cs0
-rw-r--r--[-rwxr-xr-x]util/cairo-script/examples/pythagoras-tree.cs0
-rw-r--r--[-rwxr-xr-x]util/cairo-script/examples/sierpinski.cs0
-rw-r--r--[-rwxr-xr-x]util/cairo-script/examples/wedgeAnnulus_crop_ybRings.cs0
-rw-r--r--[-rwxr-xr-x]util/cairo-script/examples/world-map.cs0
-rw-r--r--[-rwxr-xr-x]util/cairo-script/examples/zrusin.cs0
28 files changed, 82 insertions, 15 deletions
diff --git a/util/cairo-script/.gitignore b/util/cairo-script/.gitignore
index 8ecaee3e5..8ecaee3e5 100755..100644
--- a/util/cairo-script/.gitignore
+++ b/util/cairo-script/.gitignore
diff --git a/util/cairo-script/COPYING b/util/cairo-script/COPYING
index 66ad7840f..66ad7840f 100755..100644
--- a/util/cairo-script/COPYING
+++ b/util/cairo-script/COPYING
diff --git a/util/cairo-script/Makefile.am b/util/cairo-script/Makefile.am
index d5c2998ac..d5c2998ac 100755..100644
--- a/util/cairo-script/Makefile.am
+++ b/util/cairo-script/Makefile.am
diff --git a/util/cairo-script/Makefile.sources b/util/cairo-script/Makefile.sources
index fd73a17cf..fd73a17cf 100755..100644
--- a/util/cairo-script/Makefile.sources
+++ b/util/cairo-script/Makefile.sources
diff --git a/util/cairo-script/Makefile.win32 b/util/cairo-script/Makefile.win32
index 0aef981c1..0aef981c1 100755..100644
--- a/util/cairo-script/Makefile.win32
+++ b/util/cairo-script/Makefile.win32
diff --git a/util/cairo-script/cairo-script-file.c b/util/cairo-script/cairo-script-file.c
index 85d292c47..0274a3e7c 100755..100644
--- a/util/cairo-script/cairo-script-file.c
+++ b/util/cairo-script/cairo-script-file.c
@@ -176,21 +176,21 @@ csi_file_new_from_string (csi_t *ctx,
status = _csi_error (CAIRO_STATUS_NO_MEMORY);
break;
-#if HAVE_ZLIB
case ZLIB:
+#if HAVE_ZLIB
if (uncompress ((Bytef *) tmp_str->string, &len,
(Bytef *) src->string, src->len) != Z_OK)
+#endif
status = _csi_error (CAIRO_STATUS_NO_MEMORY);
break;
-#endif
-#if HAVE_LZO
case LZO:
+#if HAVE_LZO
if (lzo2a_decompress ((lzo_bytep) src->string, src->len,
(lzo_bytep) tmp_str->string, &len,
NULL))
+#endif
status = _csi_error (CAIRO_STATUS_NO_MEMORY);
break;
-#endif
}
if (_csi_unlikely (status)) {
csi_string_free (ctx, tmp_str);
@@ -1063,7 +1063,6 @@ _csi_file_as_string (csi_t *ctx,
unsigned int allocated;
csi_status_t status;
- len = 0;
allocated = 16384;
bytes = _csi_alloc (ctx, allocated);
if (bytes == NULL)
diff --git a/util/cairo-script/cairo-script-hash.c b/util/cairo-script/cairo-script-hash.c
index 0a230e8d7..0a230e8d7 100755..100644
--- a/util/cairo-script/cairo-script-hash.c
+++ b/util/cairo-script/cairo-script-hash.c
diff --git a/util/cairo-script/cairo-script-interpreter.c b/util/cairo-script/cairo-script-interpreter.c
index bdd525542..50170fc29 100755..100644
--- a/util/cairo-script/cairo-script-interpreter.c
+++ b/util/cairo-script/cairo-script-interpreter.c
@@ -634,7 +634,7 @@ cairo_script_interpreter_finish (csi_t *ctx)
if (! ctx->finished) {
_csi_finish (ctx);
ctx->finished = 1;
- } else if (status == CAIRO_STATUS_SUCCESS) {
+ } else if (status == CSI_STATUS_SUCCESS) {
status = ctx->status = CSI_STATUS_INTERPRETER_FINISHED;
}
diff --git a/util/cairo-script/cairo-script-interpreter.h b/util/cairo-script/cairo-script-interpreter.h
index 27fb98661..27fb98661 100755..100644
--- a/util/cairo-script/cairo-script-interpreter.h
+++ b/util/cairo-script/cairo-script-interpreter.h
diff --git a/util/cairo-script/cairo-script-objects.c b/util/cairo-script/cairo-script-objects.c
index a625489b1..a625489b1 100755..100644
--- a/util/cairo-script/cairo-script-objects.c
+++ b/util/cairo-script/cairo-script-objects.c
diff --git a/util/cairo-script/cairo-script-operators.c b/util/cairo-script/cairo-script-operators.c
index b14579c4a..d7cd203f5 100755..100644
--- a/util/cairo-script/cairo-script-operators.c
+++ b/util/cairo-script/cairo-script-operators.c
@@ -1769,28 +1769,28 @@ inflate_string (csi_t *ctx, csi_string_t *src)
free (bytes);
return NULL;
-#if HAVE_ZLIB
case ZLIB:
+#if HAVE_ZLIB
if (uncompress ((Bytef *) bytes, &len,
(Bytef *) src->string, src->len) != Z_OK)
+#endif
{
_csi_free (ctx, bytes);
return NULL;
}
break;
-#endif
-#if HAVE_LZO
case LZO:
+#if HAVE_LZO
if (lzo2a_decompress ((Bytef *) src->string, src->len,
(Bytef *) bytes, &len,
NULL))
+#endif
{
_csi_free (ctx, bytes);
return NULL;
}
break;
-#endif
}
bytes[len] = '\0';
@@ -1949,6 +1949,18 @@ _ft_create_for_pattern (csi_t *ctx,
}
pattern = FcNameParse (bytes);
+ if (!pattern)
+ {
+ /* Fontconfig's representation of charset changed mid 2014;
+ * We used to record charset before that. Remove everything
+ * after charset if that's present, and try again. */
+ char *s = strstr ((char *) bytes, ":charset=");
+ if (s)
+ {
+ *s = '\0';
+ pattern = FcNameParse (bytes);
+ }
+ }
if (bytes != tmpl.bytes)
_csi_free (ctx, bytes);
@@ -2983,22 +2995,22 @@ err_decompress:
cairo_surface_destroy (image);
return _csi_error (CSI_STATUS_READ_ERROR);
-#if HAVE_ZLIB
case ZLIB:
+#if HAVE_ZLIB
if (uncompress ((Bytef *) data, &out,
(Bytef *) s->string, s->len) != Z_OK)
+#endif
goto err_decompress;
break;
-#endif
-#if HAVE_LZO
case LZO:
+#if HAVE_LZO
if (lzo2a_decompress ((Bytef *) s->string, s->len,
(Bytef *) data, &out,
NULL))
+#endif
goto err_decompress;
break;
-#endif
}
}
else
@@ -4866,6 +4878,30 @@ _set_device_offset (csi_t *ctx)
}
static csi_status_t
+_set_device_scale (csi_t *ctx)
+{
+ csi_status_t status;
+ cairo_surface_t *surface;
+ double x, y;
+
+ check (3);
+
+ status = _csi_ostack_get_number (ctx, 0, &y);
+ if (_csi_unlikely (status))
+ return status;
+ status = _csi_ostack_get_number (ctx, 1, &x);
+ if (_csi_unlikely (status))
+ return status;
+ status = _csi_ostack_get_surface (ctx, 2, &surface);
+ if (_csi_unlikely (status))
+ return status;
+
+ cairo_surface_set_device_scale (surface, x, y);
+ pop (2);
+ return CSI_STATUS_SUCCESS;
+}
+
+static csi_status_t
_set_extend (csi_t *ctx)
{
csi_status_t status;
@@ -6146,6 +6182,29 @@ _surface (csi_t *ctx)
}
}
+ status = csi_name_new_static (ctx, &key, "device-scale");
+ if (_csi_unlikely (status)) {
+ cairo_surface_destroy (surface);
+ return status;
+ }
+ if (csi_dictionary_has (dict, key.datum.name)) {
+ status = csi_dictionary_get (ctx, dict, key.datum.name, &obj);
+ if (_csi_unlikely (status))
+ return status;
+
+ if (csi_object_get_type (&obj) == CSI_OBJECT_TYPE_ARRAY) {
+ csi_array_t *array = obj.datum.array;
+
+ if (array->stack.len == 2) {
+ cairo_surface_set_device_scale (surface,
+ csi_number_get_value
+ (&array->stack.objects[0]),
+ csi_number_get_value
+ (&array->stack.objects[1]));
+ }
+ }
+ }
+
obj.type = CSI_OBJECT_TYPE_SURFACE;
obj.datum.surface = surface;
pop (1);
@@ -6582,6 +6641,7 @@ _defs[] = {
{ "set-antialias", _set_antialias },
{ "set-dash", _set_dash },
{ "set-device-offset", _set_device_offset },
+ { "set-device-scale", _set_device_scale },
{ "set-extend", _set_extend },
{ "set-fallback-resolution", _set_fallback_resolution },
{ "set-fill-rule", _set_fill_rule },
diff --git a/util/cairo-script/cairo-script-private.h b/util/cairo-script/cairo-script-private.h
index 6bf41b4e5..6bf41b4e5 100755..100644
--- a/util/cairo-script/cairo-script-private.h
+++ b/util/cairo-script/cairo-script-private.h
diff --git a/util/cairo-script/cairo-script-scanner.c b/util/cairo-script/cairo-script-scanner.c
index b9d445bb3..b9d445bb3 100755..100644
--- a/util/cairo-script/cairo-script-scanner.c
+++ b/util/cairo-script/cairo-script-scanner.c
diff --git a/util/cairo-script/cairo-script-stack.c b/util/cairo-script/cairo-script-stack.c
index b1d146c52..b1d146c52 100755..100644
--- a/util/cairo-script/cairo-script-stack.c
+++ b/util/cairo-script/cairo-script-stack.c
diff --git a/util/cairo-script/csi-bind.c b/util/cairo-script/csi-bind.c
index 91b58fb95..91b58fb95 100755..100644
--- a/util/cairo-script/csi-bind.c
+++ b/util/cairo-script/csi-bind.c
diff --git a/util/cairo-script/csi-exec.c b/util/cairo-script/csi-exec.c
index d30b1c9c8..d30b1c9c8 100755..100644
--- a/util/cairo-script/csi-exec.c
+++ b/util/cairo-script/csi-exec.c
diff --git a/util/cairo-script/csi-replay.c b/util/cairo-script/csi-replay.c
index 67fed3b33..67fed3b33 100755..100644
--- a/util/cairo-script/csi-replay.c
+++ b/util/cairo-script/csi-replay.c
diff --git a/util/cairo-script/csi-trace.c b/util/cairo-script/csi-trace.c
index c57a56b18..a0466a35b 100755..100644
--- a/util/cairo-script/csi-trace.c
+++ b/util/cairo-script/csi-trace.c
@@ -2,6 +2,7 @@
#include <cairo-script-interpreter.h>
#include <stdio.h>
+#include <stdlib.h>
#include <string.h>
#include <libgen.h>
@@ -22,11 +23,18 @@ main (int argc, char **argv)
.surface_create = _script_surface_create,
};
int i;
+ char buf[4096];
csi = cairo_script_interpreter_create ();
for (i = 1; i < argc; i++) {
- char buf[4096];
+ if (strcmp (argv[i], "--version")) {
+ printf ("%s: version %s\n", argv[0], __DATE__);
+ exit (0);
+ } else if (strcmp (argv[i], "--help")) {
+ printf ("usage: %s < in > out\n", argv[0]);
+ exit (0);
+ }
snprintf (buf, sizeof (buf), "%s.trace", basename (argv[i]));
cairo_device_destroy (hooks.closure);
diff --git a/util/cairo-script/examples/Makefile.am b/util/cairo-script/examples/Makefile.am
index a87f02d9a..a87f02d9a 100755..100644
--- a/util/cairo-script/examples/Makefile.am
+++ b/util/cairo-script/examples/Makefile.am
diff --git a/util/cairo-script/examples/dragon.cs b/util/cairo-script/examples/dragon.cs
index 1060ca699..1060ca699 100755..100644
--- a/util/cairo-script/examples/dragon.cs
+++ b/util/cairo-script/examples/dragon.cs
diff --git a/util/cairo-script/examples/hilbert.cs b/util/cairo-script/examples/hilbert.cs
index 4278bf74c..4278bf74c 100755..100644
--- a/util/cairo-script/examples/hilbert.cs
+++ b/util/cairo-script/examples/hilbert.cs
diff --git a/util/cairo-script/examples/infinichess.cs b/util/cairo-script/examples/infinichess.cs
index f82b10278..f82b10278 100755..100644
--- a/util/cairo-script/examples/infinichess.cs
+++ b/util/cairo-script/examples/infinichess.cs
diff --git a/util/cairo-script/examples/interference.cs b/util/cairo-script/examples/interference.cs
index 6d2ee2200..6d2ee2200 100755..100644
--- a/util/cairo-script/examples/interference.cs
+++ b/util/cairo-script/examples/interference.cs
diff --git a/util/cairo-script/examples/pythagoras-tree.cs b/util/cairo-script/examples/pythagoras-tree.cs
index 96b4b39bc..96b4b39bc 100755..100644
--- a/util/cairo-script/examples/pythagoras-tree.cs
+++ b/util/cairo-script/examples/pythagoras-tree.cs
diff --git a/util/cairo-script/examples/sierpinski.cs b/util/cairo-script/examples/sierpinski.cs
index 6f959083b..6f959083b 100755..100644
--- a/util/cairo-script/examples/sierpinski.cs
+++ b/util/cairo-script/examples/sierpinski.cs
diff --git a/util/cairo-script/examples/wedgeAnnulus_crop_ybRings.cs b/util/cairo-script/examples/wedgeAnnulus_crop_ybRings.cs
index 5aeb97f6e..5aeb97f6e 100755..100644
--- a/util/cairo-script/examples/wedgeAnnulus_crop_ybRings.cs
+++ b/util/cairo-script/examples/wedgeAnnulus_crop_ybRings.cs
diff --git a/util/cairo-script/examples/world-map.cs b/util/cairo-script/examples/world-map.cs
index 54d9a8f31..54d9a8f31 100755..100644
--- a/util/cairo-script/examples/world-map.cs
+++ b/util/cairo-script/examples/world-map.cs
diff --git a/util/cairo-script/examples/zrusin.cs b/util/cairo-script/examples/zrusin.cs
index 8efc24bbe..8efc24bbe 100755..100644
--- a/util/cairo-script/examples/zrusin.cs
+++ b/util/cairo-script/examples/zrusin.cs