[Kst] extragear/graphics/kst/src/plugins/bin
Adam Treat
treat at kde.org
Wed Nov 29 20:45:06 CET 2006
SVN commit 609208 by treat:
Convert Bin plugin to C++ basic plugin
M +10 -10 Makefile.am
M +94 -39 bin.cpp
D bin.xml
A kstobject_bin.desktop
--- trunk/extragear/graphics/kst/src/plugins/bin/Makefile.am #609207:609208
@@ -1,11 +1,11 @@
-installdir=$(kde_moduledir)/kstplugins
-INCLUDES=-I$(srcdir)/../../kst $(all_includes)
-
-install_LTLIBRARIES = bin.la
-
-bin_la_LDFLAGS = -module $(KDE_PLUGIN)
-bin_la_SOURCES = bin.cpp
-
+INCLUDES=-I$(top_srcdir)/kst -I$(top_srcdir)/kst/src/libkst -I$(top_srcdir)/kst/src/libkstmath $(all_includes)
+
+kde_module_LTLIBRARIES=kstobject_bin.la
+
+kstobject_bin_la_LDFLAGS=$(all_libraries) -module -avoid-version
+kstobject_bin_la_SOURCES=bin.cpp
+
+services_DATA=kstobject_bin.desktop
+servicesdir=$(kde_servicesdir)/kst
+
METASOURCES=AUTO
-
-install_DATA=bin.xml
--- trunk/extragear/graphics/kst/src/plugins/bin/bin.cpp #609207:609208
@@ -1,50 +1,105 @@
-/*
- * Bin plugin for KST.
- * Copyright 2004, The University of British Columbia
- * Released under the terms of the GPL.
- */
+/***************************************************************************
+ bin.cpp
+ -------------------
+ begin : 11/28/06
+ copyright : (C) 2006 The University of Toronto
+ email :
+ ***************************************************************************/
-#include <stdlib.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 "bin.h"
-extern "C" int bin(const double *const inArrays[], const int inArrayLens[],
- const double is[],
- double *outArrays[], int outArrayLens[],
- double outScalars[]);
+#include <kgenericfactory.h>
-int bin(const double *const inArrays[], const int inArrayLens[],
- const double is[],
- double *outArrays[], int outArrayLens[],
- double outScalars[])
+//in
+static const QString& INPUT = KGlobal::staticQString("Input Vector");
+static const QString& SIZE = KGlobal::staticQString("Bin Size");
+
+//out
+static const QString& BINS = KGlobal::staticQString("Bins");
+
+KST_KEY_DATAOBJECT_PLUGIN( bin )
+
+K_EXPORT_COMPONENT_FACTORY( kstobject_bin,
+ KGenericFactory<Bin>( "kstobject_bin" ) )
+
+Bin::Bin( QObject */*parent*/, const char */*name*/, const QStringList &/*args*/ )
+ : KstBasicPlugin() {
+}
+
+
+Bin::~Bin() {
+}
+
+
//Bin the elements into the given size bins, additional elements at the end of the
//input vector are ignored.
//Returns -1 on error, 0 on success.
-{
- //Cast the binsize to an integer if it is not one
- int binsize=(int)is[0];
+bool Bin::algorithm() {
- //Make sure there is at least 1 element in the input vector
- //Make sure the bin size is at least 1
- if (inArrayLens[0] < 1 || binsize < 1) {
- return -1;
- }
+ KstVectorPtr input = inputVector(INPUT);
+ KstScalarPtr size = inputScalar(SIZE);
+ KstVectorPtr bins = outputVector(BINS);
- //now set the outputs
- outArrayLens[0]=(int) (inArrayLens[0] / binsize);
+ //Make sure there is at least 1 element in the input vector
+ //Make sure the bin size is at least 1
+ if (input->length() < 1 || size->value() < 1) {
+ return -1;
+ }
- //resize the output array
- outArrays[0]=(double*)realloc(outArrays[0], outArrayLens[0]*sizeof(double));
+ // allocate the lengths
+ bins->resize(int(input->length() / size->value()), false);
- //now bin the data
- for (int i=0; i<outArrayLens[0]; i++)
- {
- outArrays[0][i]=0;
- //add up the elements for this bin
- for (int j=0; j<binsize; j++)
- {
- outArrays[0][i]+=inArrays[0][i*binsize+j];
- }
- //find the mean
- outArrays[0][i]/=binsize;
- }
- return 0;
+ //now bin the data
+ for (int i=0; i<bins->length(); i++)
+ {
+ bins->value()[i]=0;
+ //add up the elements for this bin
+ for (int j=0; j<size->value(); j++)
+ {
+ bins->value()[i]+=input->value()[int(i*size->value()+j)];
+ }
+ //find the mean
+ bins->value()[i]/=size->value();
+ }
+ return true;
}
+
+
+QStringList Bin::inputVectorList() const {
+ return QStringList( INPUT );
+}
+
+
+QStringList Bin::inputScalarList() const {
+ return QStringList( SIZE );
+}
+
+
+QStringList Bin::inputStringList() const {
+ return QStringList();
+}
+
+
+QStringList Bin::outputVectorList() const {
+ return QStringList( BINS );
+}
+
+
+QStringList Bin::outputScalarList() const {
+ return QStringList();
+}
+
+
+QStringList Bin::outputStringList() const {
+ return QStringList();
+}
+
+#include "bin.moc"
More information about the Kst
mailing list