[Kst] extragear/graphics/kst/src/plugins/chop
George Staikos
staikos at kde.org
Wed Nov 29 22:44:26 CET 2006
And this fixes the bug in chop too, right?
On 29-Nov-06, at 4:25 PM, Adam Treat wrote:
> SVN commit 609242 by treat:
>
> Convert chop plugin to C++ basic plugin
>
>
> M +7 -7 Makefile.am
> M +101 -63 chop.cpp
> A chop.h [License: GPL (v2+)]
> D chop.xml
> A kstobject_chop.desktop
>
>
> --- trunk/extragear/graphics/kst/src/plugins/chop/Makefile.am
> #609241:609242
> @@ -1,11 +1,11 @@
> -installdir=$(kde_moduledir)/kstplugins
> -INCLUDES=-I$(srcdir)/../../../kst $(all_includes)
> +INCLUDES=-I$(top_srcdir)/kst -I$(top_srcdir)/kst/src/libkst -I$
> (top_srcdir)/kst/src/libkstmath $(all_includes)
>
> -install_LTLIBRARIES=chop.la
> +kde_module_LTLIBRARIES=kstobject_chop.la
>
> -chop_la_LDFLAGS=-module $(KDE_PLUGIN) $(all_libraries)
> -chop_la_SOURCES=chop.cpp
> +kstobject_chop_la_LDFLAGS=$(all_libraries) -module -avoid-version
> +kstobject_chop_la_SOURCES=chop.cpp
>
> +services_DATA=kstobject_chop.desktop
> +servicesdir=$(kde_servicesdir)/kst
> +
> METASOURCES=AUTO
> -
> -install_DATA=chop.xml
> --- trunk/extragear/graphics/kst/src/plugins/chop/chop.cpp
> #609241:609242
> @@ -1,68 +1,106 @@
> -/*
> - * Phase plugin for KST.
> - * Copyright 2003, The University of British Columbia
> - * Released under the terms of the GPL.
> - *
> - */
> +/
> **********************************************************************
> *****
> + chop.cpp
> + -------------------
> + begin : 11/29/06
> + copyright : (C) 2006 The University of Toronto
> + email :
> +
> **********************************************************************
> *****/
>
> -#include <stdlib.h>
> -#include <math.h>
> -#include <string.h>
> +/
> **********************************************************************
> *****
> +
> *
> *
> + * This program is free software; you can redistribute it and/or
> modify *
> + * it under the terms of the GNU General Public License as
> published by *
> + * the Free Software Foundation; either version 2 of the
> License, or *
> + * (at your option) any later
> version. *
> +
> *
> *
> +
> **********************************************************************
> *****/
> +#include "chop.h"
>
> -#define KST_UNUSED(x) if(x){};
> +#include <kgenericfactory.h>
>
> -extern "C" int chop( const double *const inArrays[], const int
> inArrayLens[],
> - const double inScalars[],
> - double *outArrays[], int outArrayLens[],
> - double outScalars[] );
> +static const QString& ARRAY = KGlobal::staticQString("Array");
> +static const QString& ODD = KGlobal::staticQString("Odd Array");
> +static const QString& EVEN = KGlobal::staticQString("Even Array");
> +static const QString& DIFF = KGlobal::staticQString("Difference
> Array");
> +static const QString& INDEX = KGlobal::staticQString("Index Array");
>
> -int chop( const double *const inArrays[], const int inArrayLens[],
> - const double inScalars[],
> - double *outArrays[], int outArrayLens[],
> - double outScalars[] )
> -{
> - KST_UNUSED( inScalars )
> - KST_UNUSED( outScalars )
> -
> - double* pResult[4];
> - int iRetVal = -1;
> - int iLength = inArrayLens[0];
> - int iLengthNew = iLength / 2;
> - int i;
> -
> - if( iLength > 1 )
> - {
> - for( i=0; i<4; i++ )
> - {
> - if( outArrayLens[i] != iLengthNew )
> - {
> - pResult[i] = (double*)realloc( outArrays[i],
> iLengthNew * sizeof( double ) );
> - }
> - else
> - {
> - pResult[i] = outArrays[i];
> - }
> - }
> -
> - if( pResult[0] != NULL && pResult[1] != NULL && pResult
> [2] != NULL && pResult[3] != NULL )
> - {
> - for( i=0; i<4; i++ )
> - {
> - outArrays[i] = pResult[i];
> - outArrayLens[i] = iLengthNew;
> - }
> -
> - for( i=0; i<iLength; i+=2 )
> - {
> - outArrays[0][i/2] = inArrays[0][i+0];
> - outArrays[1][i/2] = inArrays[0][i+1];
> - outArrays[2][i/2] = inArrays[0][i+0] - inArrays[0]
> [i+1];
> - outArrays[3][i/2] = i/2;
> - }
> -
> - iRetVal = 0;
> - }
> - }
> -
> - return iRetVal;
> +KST_KEY_DATAOBJECT_PLUGIN( chop )
> +
> +K_EXPORT_COMPONENT_FACTORY( kstobject_chop,
> + KGenericFactory<Chop>( "kstobject_chop" ) )
> +
> +Chop::Chop( QObject */*parent*/, const char */*name*/, const
> QStringList &/*args*/ )
> + : KstBasicPlugin() {
> }
> +
> +
> +Chop::~Chop() {
> +}
> +
> +
> +bool Chop::algorithm() {
> +
> + KstVectorPtr array = inputVector(ARRAY);
> +
> + KstVectorPtr odd = outputVector(ODD);
> + KstVectorPtr even = outputVector(EVEN);
> + KstVectorPtr diff = outputVector(DIFF);
> + KstVectorPtr index = outputVector(INDEX);
> +
> + QValueList<KstVectorPtr> outputs;
> + outputs << odd << even << diff << index;
> +
> + int iLength = array->length();
> + int iLengthNew = (int)ceil(iLength / 2.0);
> +
> + if (iLength > 1) {
> +
> + QValueList<KstVectorPtr>::iterator it = outputs.begin();
> + for(; it != outputs.end(); ++it) {
> + if ((*it)->length() != iLengthNew) {
> + (*it)->resize(iLengthNew, false);
> + }
> + }
> +
> + for (int i = 0; i < iLength; i+=2) {
> + odd->value()[i/2] = array->value()[i];
> + even->value()[i/2] = array->value()[i+1];
> + diff->value()[i/2] = array->value()[i] - array->value()[i+1];
> + index->value()[i/2] = i/2;
> + }
> + }
> +
> + return true;
> +}
> +
> +
> +QStringList Chop::inputVectorList() const {
> + return QStringList( ARRAY );
> +}
> +
> +
> +QStringList Chop::inputScalarList() const {
> + return QStringList();
> +}
> +
> +
> +QStringList Chop::inputStringList() const {
> + return QStringList();
> +}
> +
> +
> +QStringList Chop::outputVectorList() const {
> + return QStringList( ODD ) << EVEN << DIFF << INDEX;
> +}
> +
> +
> +QStringList Chop::outputScalarList() const {
> + return QStringList();
> +}
> +
> +
> +QStringList Chop::outputStringList() const {
> + return QStringList();
> +}
> +
> +#include "chop.moc"
> _______________________________________________
> Kst mailing list
> Kst at kde.org
> https://mail.kde.org/mailman/listinfo/kst
>
--
George Staikos
KDE Developer http://www.kde.org/
Staikos Computing Services Inc. http://www.staikos.net/
More information about the Kst
mailing list