Why not?
This commit is contained in:
parent
a01e58366c
commit
28994509cc
82 changed files with 13293 additions and 0 deletions
60
src/cmd/jpg/multichan.c
Normal file
60
src/cmd/jpg/multichan.c
Normal file
|
|
@ -0,0 +1,60 @@
|
|||
#include <u.h>
|
||||
#include <libc.h>
|
||||
#include <draw.h>
|
||||
#include <memdraw.h>
|
||||
#include <bio.h>
|
||||
#include "imagefile.h"
|
||||
|
||||
/* Separate colors, if not a grey scale or bitmap, into one byte per color per pixel, no alpha or X */
|
||||
/* Result is GREY[1248] or RGB24 */
|
||||
|
||||
int drawlog2[] = {
|
||||
0, 0, 1, 0, 2, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0,
|
||||
4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
5
|
||||
};
|
||||
|
||||
static
|
||||
int
|
||||
notrans(ulong chan)
|
||||
{
|
||||
switch(chan){
|
||||
case GREY1:
|
||||
case GREY2:
|
||||
case GREY4:
|
||||
case GREY8:
|
||||
case RGB24:
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
Image*
|
||||
multichan(Image *i)
|
||||
{
|
||||
Image *ni;
|
||||
|
||||
if(notrans(i->chan))
|
||||
return i;
|
||||
|
||||
ni = allocimage(display, i->r, RGB24, 0, DNofill);
|
||||
if(ni == nil)
|
||||
return ni;
|
||||
draw(ni, ni->r, i, nil, i->r.min);
|
||||
return ni;
|
||||
}
|
||||
|
||||
Memimage*
|
||||
memmultichan(Memimage *i)
|
||||
{
|
||||
Memimage *ni;
|
||||
|
||||
if(notrans(i->chan))
|
||||
return i;
|
||||
|
||||
ni = allocmemimage(i->r, RGB24);
|
||||
if(ni == nil)
|
||||
return ni;
|
||||
memimagedraw(ni, ni->r, i, i->r.min, nil, i->r.min, S);
|
||||
return ni;
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue