Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'source/blender/imbuf/intern/bitplanes.c')
-rw-r--r--source/blender/imbuf/intern/bitplanes.c356
1 files changed, 0 insertions, 356 deletions
diff --git a/source/blender/imbuf/intern/bitplanes.c b/source/blender/imbuf/intern/bitplanes.c
deleted file mode 100644
index 91fd2a0f563..00000000000
--- a/source/blender/imbuf/intern/bitplanes.c
+++ /dev/null
@@ -1,356 +0,0 @@
-/**
- * bitplanes.c
- *
- * $Id$
- *
- * ***** BEGIN GPL LICENSE BLOCK *****
- *
- * 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.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
- * All rights reserved.
- *
- * The Original Code is: all of this file.
- *
- * Contributor(s): none yet.
- *
- * ***** END GPL LICENSE BLOCK *****
- */
-
-#include "imbuf.h"
-#include "BLI_blenlib.h"
-
-#include "imbuf_patch.h"
-
-#include "IMB_imbuf_types.h"
-#include "IMB_imbuf.h"
-#include "IMB_allocimbuf.h"
-#include "IMB_bitplanes.h"
-
-unsigned int **imb_copyplanelist(struct ImBuf *ibuf)
-{
- int nobp,i;
- unsigned int **listn,**listo;
-
- nobp=ibuf->depth;
- listn= malloc(nobp*sizeof(int *)); /* make copy of bitmap */
- if (listn==0) return (0);
-
- listo=ibuf->planes;
- for (i=nobp;i>0;i--){
- *(listn++) = *(listo++);
- }
- listn -= nobp;
-
- return (listn);
-}
-
-static void bptolscanl(unsigned int *buf, int size, unsigned int **list, int nobp, int offset)
-{
- /* converts bitplanes to a buffer with ints
- by 4 dividiable amount of bitplanes,
- the width of bitplanes is rounded at ints */
-
- list += nobp;
-
- for (;nobp>0;)
- {
- int todo,i;
- register int bp1, bp2, bp3, bp4, data;
- register unsigned int *point;
- int loffset;
- /*register unsigned int bp1, bp2, bp3, bp4;*/
-
- bp1 = bp2 = bp3 = bp4 = todo = 0;
- point = buf;
- loffset = offset;
-
- if (nobp & 1){
- list -= 1;
- nobp -= 1;
- for(i=size;i>0;i--)
- {
- if (todo==0)
- {
- bp1 = BIG_LONG((list[0])[loffset]);
- loffset++;
- todo=32;
- }
-
- data = *point;
- data<<=1;
-
- if (bp1<0) data+=1;
- bp1<<=1;
-
- /* data += (bp1 >> 31);
- bp1 <<= 1;
- */
- *(point++)=data;
- todo--;
- }
- } else if (nobp & 2){
- list -= 2;
- nobp -= 2;
- for(i=size;i>0;i--)
- {
- if (todo==0)
- {
- bp1 = BIG_LONG((list[0])[loffset]);
- bp2 = BIG_LONG((list[1])[loffset]);
- loffset++;
- todo=32;
- }
-
- data = *point;
- data<<=2;
-
- if (bp1<0) data+=1;
- bp1<<=1;
- if (bp2<0) data+=2;
- bp2<<=1;
-
- /* data += (bp1 >> 31) + ((bp2 & 0x80000000) >> 30);
- bp1 <<= 1; bp2 <<= 1;
- */
- *(point++)=data;
- todo--;
- }
- } else{
- list -= 4;
- nobp -= 4;
- for(i=size;i>0;i--)
- {
- if (todo==0) {
- bp1 = BIG_LONG((list[0])[loffset]);
- bp2 = BIG_LONG((list[1])[loffset]);
- bp3 = BIG_LONG((list[2])[loffset]);
- bp4 = BIG_LONG((list[3])[loffset]);
- loffset++;
- todo=32;
- }
-
- data = *point;
- data<<=4;
-
- if (bp1<0) data+=1;
- bp1<<=1;
- if (bp2<0) data+=2;
- bp2<<=1;
- if (bp3<0) data+=4;
- bp3<<=1;
- if (bp4<0) data+=8;
- bp4<<=1;
-
- /* data += (bp1 >> 31) \
- + ((bp2 & 0x80000000) >> 30) \
- + ((bp3 & 0x80000000) >> 29) \
- + ((bp4 & 0x80000000) >> 28);
-
- bp1 <<= 1; bp2 <<= 1;
- bp3 <<= 1; bp4 <<= 1;
- */
-
- *(point++)=data;
- todo--;
- }
- }
- }
-}
-
-
-void imb_bptolong(struct ImBuf *ibuf)
-{
- int nobp,i,x;
- unsigned int *rect,offset;
- float black[4] = {0.0,0.0,0.0,1.0};
- float clear[4] = {0.0,0.0,0.0,0.0};
-
- /* first clear all ints */
-
- if (ibuf == 0) return;
- if (ibuf->planes == 0) return;
- if (ibuf->rect == 0) imb_addrectImBuf(ibuf);
-
- nobp=ibuf->depth;
- if (nobp != 32){
- if (nobp == 24) IMB_rectfill(ibuf, black); /* set alpha */
- else IMB_rectfill(ibuf, clear);
- }
-
- rect= ibuf->rect;
- x= ibuf->x;
- offset=0;
-
- for (i= ibuf->y; i>0; i--){
- bptolscanl(rect, x, ibuf->planes, nobp, offset);
- rect += x;
- offset += ibuf->skipx;
- }
-}
-
-
-static void ltobpscanl(unsigned int *rect, int x, unsigned int **list, int nobp, int offset)
-{
- /* converts a buffer with ints to bitplanes. Take care, buffer
- will be destroyed !*/
-
- if (nobp != 32)
- {
- int *rect2;
- int todo,j;
-
- rect2 = (int*)rect;
-
- todo = 32-nobp;
- for (j = x;j>0;j--){
- *(rect2++) <<= todo;
- }
- }
-
- list += nobp;
- for (;nobp>0;){
- register int bp1=0, bp2=0, bp3=0, data;
- register unsigned int *point;
- int i,todo;
- int bp4=0,loffset;
-
- point = rect;
- todo=32;
- loffset=offset;
-
- if (nobp & 1){
- list -= 1;
- nobp -= 1;
-
- for(i=x;i>0;i--){
- data = *point;
-
- bp1 <<= 1;
- if (data<0) bp1 += 1;
- data <<= 1;
-
- *(point++) = data;
-
- todo--;
- if (todo == 0){
- (list[0])[loffset] = bp1;
- loffset++;
- todo=32;
- }
- }
- if (todo != 32)
- {
- bp1 <<= todo;
- (list[0])[loffset] = bp1;
- }
- } else if (nobp & 2){
- list -= 2;
- nobp -= 2;
- for(i=x;i>0;i--){
- data = *point;
-
- bp2 <<= 1;
- if (data<0) bp2 += 1;
- data <<= 1;
- bp1 <<= 1;
- if (data<0) bp1 += 1;
- data <<= 1;
-
- *(point++) = data;
-
- todo--;
- if (todo == 0){
- (list[0])[loffset] = bp1;
- (list[1])[loffset] = bp2;
- loffset++;
- todo=32;
- }
- }
- if (todo != 32){
- bp1 <<= todo;
- bp2 <<= todo;
- (list[0])[loffset] = bp1;
- (list[1])[loffset] = bp2;
- }
- } else{
- list -= 4;
- nobp -= 4;
- for(i=x;i>0;i--){
- data = *point;
-
- bp4 <<= 1;
- if (data<0) bp4 += 1;
- data <<= 1;
- bp3 <<= 1;
- if (data<0) bp3 += 1;
- data <<= 1;
- bp2 <<= 1;
- if (data<0) bp2 += 1;
- data <<= 1;
- bp1 <<= 1;
- if (data<0) bp1 += 1;
- data <<= 1;
-
- *(point++) = data;
-
- todo--;
- if (todo == 0){
- (list[0])[loffset] = bp1;
- (list[1])[loffset] = bp2;
- (list[2])[loffset] = bp3;
- (list[3])[loffset] = bp4;
- loffset++;
- todo=32;
- }
- }
- if (todo != 32){
- bp1 <<= todo;
- bp2 <<= todo;
- bp3 <<= todo;
- bp4 <<= todo;
- (list[0])[loffset] = bp1;
- (list[1])[loffset] = bp2;
- (list[2])[loffset] = bp3;
- (list[3])[loffset] = bp4;
- }
- }
- }
-}
-
-
-void imb_longtobp(struct ImBuf *ibuf)
-{
- /* converts a buffer with ints to bitplanes. Take care, buffer
- will be destroyed !*/
-
- int nobp,i,x;
- unsigned int *rect,offset,*buf;
- ;
-
- nobp = ibuf->depth;
- rect=ibuf->rect;
- x=ibuf->x;
- offset=0;
- if ((buf=malloc(x*sizeof(int)))==0) return;
-
- for (i=ibuf->y;i>0;i--){
- memcpy(buf, rect, x*sizeof(int));
- rect +=x ;
- ltobpscanl(buf, x, ibuf->planes, nobp, offset);
- offset += ibuf->skipx;
- }
- free(buf);
-}