From 64b5b9e514ec32347285501cd70bdb67b31a2e56 Mon Sep 17 00:00:00 2001 From: John Cupitt Date: Fri, 22 Nov 2013 09:19:35 +0000 Subject: [PATCH] add SEQ operation hint to conv conv operations can run sequentially over images --- libvips/convolution/convolution.c | 3 +++ libvips/convolution/correlation.c | 3 +++ libvips/convolution/gaussblur.c | 3 +++ libvips/convolution/sharpen.c | 3 +++ 4 files changed, 12 insertions(+) diff --git a/libvips/convolution/convolution.c b/libvips/convolution/convolution.c index 270e7be7..e05dfcdc 100644 --- a/libvips/convolution/convolution.c +++ b/libvips/convolution/convolution.c @@ -104,6 +104,7 @@ vips_convolution_class_init( VipsConvolutionClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class ); + VipsOperationClass *operation_class = VIPS_OPERATION_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; @@ -112,6 +113,8 @@ vips_convolution_class_init( VipsConvolutionClass *class ) vobject_class->description = _( "convolution operations" ); vobject_class->build = vips_convolution_build; + operation_class->flags = VIPS_OPERATION_SEQUENTIAL; + /* Inputs set by subclassess. */ diff --git a/libvips/convolution/correlation.c b/libvips/convolution/correlation.c index e1a3facf..1831b790 100644 --- a/libvips/convolution/correlation.c +++ b/libvips/convolution/correlation.c @@ -131,6 +131,7 @@ vips_correlation_class_init( VipsCorrelationClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; + VipsOperationClass *operation_class = VIPS_OPERATION_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; @@ -139,6 +140,8 @@ vips_correlation_class_init( VipsCorrelationClass *class ) object_class->description = _( "correlation operation" ); object_class->build = vips_correlation_build; + operation_class->flags = VIPS_OPERATION_SEQUENTIAL; + VIPS_ARG_IMAGE( class, "in", 0, _( "Input" ), _( "Input image argument" ), diff --git a/libvips/convolution/gaussblur.c b/libvips/convolution/gaussblur.c index a344b534..b3290a56 100644 --- a/libvips/convolution/gaussblur.c +++ b/libvips/convolution/gaussblur.c @@ -102,6 +102,7 @@ vips_gaussblur_class_init( VipsGaussblurClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; + VipsOperationClass *operation_class = VIPS_OPERATION_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; @@ -110,6 +111,8 @@ vips_gaussblur_class_init( VipsGaussblurClass *class ) object_class->description = _( "Unsharp masking for print" ); object_class->build = vips_gaussblur_build; + operation_class->flags = VIPS_OPERATION_SEQUENTIAL; + VIPS_ARG_IMAGE( class, "in", 1, _( "Input" ), _( "Input image" ), diff --git a/libvips/convolution/sharpen.c b/libvips/convolution/sharpen.c index 46258f00..b264d6ae 100644 --- a/libvips/convolution/sharpen.c +++ b/libvips/convolution/sharpen.c @@ -295,6 +295,7 @@ vips_sharpen_class_init( VipsSharpenClass *class ) { GObjectClass *gobject_class = G_OBJECT_CLASS( class ); VipsObjectClass *object_class = (VipsObjectClass *) class; + VipsOperationClass *operation_class = VIPS_OPERATION_CLASS( class ); gobject_class->set_property = vips_object_set_property; gobject_class->get_property = vips_object_get_property; @@ -303,6 +304,8 @@ vips_sharpen_class_init( VipsSharpenClass *class ) object_class->description = _( "Unsharp masking for print" ); object_class->build = vips_sharpen_build; + operation_class->flags = VIPS_OPERATION_SEQUENTIAL; + VIPS_ARG_IMAGE( class, "in", 1, _( "Input" ), _( "Input image" ),