summaryrefslogtreecommitdiffstats
path: root/kernel/kls_ljpeg/ljpeg2ppm/mcu.c
diff options
context:
space:
mode:
authortpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da>2010-02-24 17:43:19 +0000
committertpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da>2010-02-24 17:43:19 +0000
commit0292059f4a16434600564cfa3f0ad2309a508a54 (patch)
treed95953cd53011917c4df679b96aedca39401b54f /kernel/kls_ljpeg/ljpeg2ppm/mcu.c
downloadlibksquirrel-0292059f4a16434600564cfa3f0ad2309a508a54.tar.gz
libksquirrel-0292059f4a16434600564cfa3f0ad2309a508a54.zip
Added libksquirrel for KDE3
git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/libraries/libksquirrel@1095624 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
Diffstat (limited to 'kernel/kls_ljpeg/ljpeg2ppm/mcu.c')
-rw-r--r--kernel/kls_ljpeg/ljpeg2ppm/mcu.c125
1 files changed, 125 insertions, 0 deletions
diff --git a/kernel/kls_ljpeg/ljpeg2ppm/mcu.c b/kernel/kls_ljpeg/ljpeg2ppm/mcu.c
new file mode 100644
index 0000000..bb1f0b3
--- /dev/null
+++ b/kernel/kls_ljpeg/ljpeg2ppm/mcu.c
@@ -0,0 +1,125 @@
+/*
+ * mcu.c --
+ *
+ * Support for MCU allocation, deallocation, and printing.
+ *
+ * Copyright (c) 1993 Brian C. Smith, The Regents of the University
+ * of California
+ * All rights reserved.
+ *
+ * Copyright (c) 1994 Kongji Huang and Brian C. Smith.
+ * Cornell University
+ * All rights reserved.
+ *
+ * Permission to use, copy, modify, and distribute this software and its
+ * documentation for any purpose, without fee, and without written agreement is
+ * hereby granted, provided that the above copyright notice and the following
+ * two paragraphs appear in all copies of this software.
+ *
+ * IN NO EVENT SHALL CORNELL UNIVERSITY BE LIABLE TO ANY PARTY FOR
+ * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT
+ * OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF CORNELL
+ * UNIVERSITY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * CORNELL UNIVERSITY SPECIFICALLY DISCLAIMS ANY WARRANTIES,
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
+ * AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS
+ * ON AN "AS IS" BASIS, AND CORNELL UNIVERSITY HAS NO OBLIGATION TO
+ * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <malloc.h>
+#include <string.h>
+#include "jpeg.h"
+#include "mcu.h"
+#include "proto.h"
+
+MCU *mcuTable; /* the global mcu table that buffers the source image */
+MCU *mcuROW1, *mcuROW2; /* point to two rows of MCU in encoding & decoding */
+int numMCU; /* number of MCUs in mcuTable */
+/*
+ *--------------------------------------------------------------
+ *
+ * MakeMCU, InitMcuTable --
+ *
+ * InitMcuTable does a big malloc to get the amount of memory
+ * we'll need for storing MCU's, once we know the size of our
+ * input and output images.
+ * MakeMCU returns an MCU for input parsing.
+ *
+ * Results:
+ * A new MCU
+ *
+ * Side effects:
+ * None.
+ *
+ *--------------------------------------------------------------
+ */
+void
+InitMcuTable(lnumMCU,compsInScan)
+ int lnumMCU;
+ int compsInScan;
+{
+ int i, mcuSize;
+ char *buffer;
+
+ /*
+ * Compute size of on MCU (in bytes). Round up so it's on a
+ * boundary for any alignment. In this code, we assume this
+ * is a whole multiple of sizeof(double).
+ */
+ mcuSize = compsInScan * sizeof(ComponentType);
+ mcuSize = JroundUp(mcuSize,sizeof(double));
+
+ /*
+ * Allocate the MCU table, and a buffer which will contain all
+ * the data. Then carve up the buffer by hand. Note that
+ * mcuTable[0] points to the buffer, in case we want to free
+ * it up later.
+ */
+ mcuTable = (MCU *)malloc(lnumMCU * sizeof(MCU));
+ if (mcuTable==NULL)
+ fprintf(stderr,"Not enough memory for mcuTable\n");
+ buffer = (char *)malloc(lnumMCU * mcuSize);
+ if (buffer==NULL)
+ fprintf(stderr,"Not enough memory for buffer\n");
+ for (i=0; i<lnumMCU; i++) {
+ mcuTable[i] = (MCU)(buffer + i*mcuSize);
+ }
+}
+
+#define MakeMCU(dcPtr) (mcuTable[numMCU++])
+
+/*
+ *--------------------------------------------------------------
+ *
+ * PrintMCU --
+ *
+ * Send an MCU in quasi-readable form to stdout.
+ *
+ * Results:
+ * None.
+ *
+ * Side effects:
+ * None.
+ *
+ *--------------------------------------------------------------
+ */
+void
+PrintMCU (compsInScan, mcu)
+ int compsInScan;
+ MCU mcu;
+{
+ ComponentType r;
+ int b;
+ static int callCount;
+
+ for (b=0; b<compsInScan; b++) {
+ callCount++;
+ r = mcu[b];
+ printf ("%d: %d ", callCount, r);
+ printf ("\n");
+ }
+}