Remove old logotool from tree

This commit is contained in:
Pali Rohár committed 2012-11-25 20:52:16 +01:00
1 parent 9833f94dad
commit 880a3e0846
7 files changed
+3 -550

No files matched your search

+3 -10
View File
@@ -2,36 +2,29 @@ include config.mk
PREFIX?=/usr/local
DESTDIR?=
all: logot frontend
all: frontend
cd src && ${MAKE} all
frontend:
-cd src/gui && ${MAKE} all
static: logot
static:
cd src && ${MAKE} static
cd logotool && ${MAKE} static
allusb: logot
allusb:
cd src && ${MAKE} allusb
logot:
cd logotool && ${MAKE} all
clean:
cd src && ${MAKE} clean
cd logotool && ${MAKE} clean
install:
mkdir -p ${DESTDIR}${PREFIX}/bin
mkdir -p ${DESTDIR}${PREFIX}/share/applications/
cp src/0xFFFF ${DESTDIR}${PREFIX}/bin
-cp src/gui/goxf ${DESTDIR}${PREFIX}/bin
cp logotool/logotool ${DESTDIR}${PREFIX}/bin
cp 0xFFFF.desktop ${DESTDIR}${PREFIX}/share/applications/
deinstall:
rm -f ${DESTDIR}${PREFIX}/bin/0xFFFF
rm -f ${DESTDIR}${PREFIX}/bin/logotool
rm -f ${DESTDIR}${PREFIX}/bin/goxf
rm ${DESTDIR}${PREFIX}/share/applications/0xFFFF.desktop
-14
View File
@@ -1,14 +0,0 @@
OBJ=logotool.o compress.o uncompress.o rgb2yuv.o
#CFLAGS=-Wall -g
BIN=logotool
all: ${BIN}
${BIN}: ${OBJ}
${CC} ${OBJ} -o logotool
static: ${BIN}
${CC} -static ${OBJ} -o logotool
clean:
rm -f ${OBJ} logotool
-17
View File
@@ -1,17 +0,0 @@
Compressing/Uncompressing images
================================
To compress your image type:
$ gimp -> create an image and save as raw rgb (24 bits)
$ logotool -w 300 -h 200 -c MyImage.rgb
This command will create MyImage.rgb.logo
You can check if the image is fine typing:
$ logotool -u MyImage.rgb.logo
To see the image you'll need mplayer and type this:
$ `logotool -u MyImage.rgb.logo`
-145
View File
@@ -1,145 +0,0 @@
/*
* logotool - tool to modify logo images with simple compression
* Copyright (C) 2007
* pancake <pancake@youterm.com>
* esteve <esteve@eslack.org>
*
* 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 3 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, see <http://www.gnu.org/licenses/>.
*/
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <getopt.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
extern int rgba;
int isbe()
{
int a=1; char *b=(char *)&a;
return (int)b[0];
}
void ememcpy(char *dst, char *src)
{
char buffer[4];
memcpy(buffer, src, 4);
dst[0] = buffer[3]; dst[1] = buffer[2];
dst[2] = buffer[1]; dst[3] = buffer[0];
}
int compress_image(char *srcf, char *dstf, int w, int h)
{
char buf[256];
char tmp[256];
int fdout;
FILE *fd;
int i,ret;
fd = fopen(srcf, "rb");
if (fd == NULL) {
printf("Cannot open file '%s' \n", srcf);
return 1;
}
fdout = open( dstf, O_TRUNC | O_CREAT | O_WRONLY , 0660 );
if (fdout == -1) {
printf("Cannot open file '%s' for writing\n", dstf);
return 1;
}
if (isbe()) {
char oop[4];
ememcpy((char *)&oop, (char *)&w);
write(fdout, &oop, 4);
ememcpy((char *)&oop, (char *)&h);
write(fdout, &oop, 4);
} else {
write(fdout, &w, 4);
write(fdout, &h, 4);
}
fseek(fd, 0, SEEK_END);
if (!rgba && ftell(fd)%3) {
fprintf(stderr, "Oops..looks like RGBA..forcing -a\n");
rgba = 1;
}
fseek(fd, 0, SEEK_SET);
#define MAX 3*80
if (rgba) {
for(;;) {
unsigned char c;
ret = fread(&buf, 1, MAX, fd);
if (ret <= 0) break;
c = ret/4;
write(fdout,&c, 1);
for(i=0;i<ret;i+=4) {
tmp[0] = buf[i+0]&0xf8;
tmp[0] |= buf[i+1]&0x07;
tmp[1] = buf[i+1]&0xe0;
tmp[1] |= buf[i+2]&0x1f;
write(fdout, tmp, 2);
}
}
} else {
for(;;) {
unsigned char c;
ret = fread(buf, 1, MAX, fd);
if (ret <= 0) break;
c = ret/3;
write(fdout,&c, 1);
for(i=0;i<ret;i+=3) {
tmp[0] = buf[i+0]&0xf8;
tmp[0] |= buf[i+1]&0x07;
tmp[1] = buf[i+1]&0xe0;
tmp[1] |= buf[i+2]&0x1f;
write(fdout, tmp, 2);
}
}
}
fclose(fd);
close(fdout);
printf("eval PATH=$PWD:$PATH logotool -u %s\n", dstf);
return 1;
}
#if 0
// TODO: compression stuff
/* is a repeated block? */
c = buf[0];
for(i=1;i<MAX&&buf[i]==c&&buf[i+1]==c;i+=2);
printf("memcpy %d -> %d (ret %d)\n",i,ret-i, ret);
for(i=0;i<ret-i;i++)
printf(" %02x ", (unsigned char)buf[i]);
printf("\n");
if (i>5) {
// if (i==MAX) {
if (0x80>ret) printf("PRON\n");
c = 0x80 | ret; //(int)((2*ret/3)>>1);
write(fdout,&c, 1);
tmp[0] = buf[i+0]&0xf8;
tmp[0] |= buf[i+1]&0x07;
tmp[1] = buf[i+1]&0xe0;
tmp[1] |= buf[i+1]&0x1f;
write(fdout, tmp, 2);
// restore state
memcpy(buf,buf+i,ret-i);
ret -= i;
}
#endif
-130
View File
@@ -1,130 +0,0 @@
/*
* logotool - tool to modify logo images with simple compression
* Copyright (C) 2007
* pancake <pancake@youterm.com>
* esteve <esteve@eslack.org>
*
* 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 3 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, see <http://www.gnu.org/licenses/>.
*/
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <getopt.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#define VERSION "0.1"
int uncompress_image(char *srcf, char *dstf);
int compress_image(char *srcf, char *dstf, int w, int h);
int rgb2yuv(char *from, char *to, int width, int height);
int rgba = 0;
static int show_usage()
{
printf("Usage: logotool [-flags]\n");
printf(" -u [img] uncompress image to img.rgb\n");
printf(" -c [img] compres a 24 bit rgb raw image to a 16(565) one\n");
printf(" -m [img] show image using mplayer (dumps to <img>.yuv)\n");
printf(" -v [img] view uncompressed image using the 'display'\n");
printf(" command from ImageMagick (in monochrome)\n");
printf(" -w specify width (required for -v and -c)\n");
printf(" -a force RGBA instead of RGB when compressing (use with -c)\n");
printf(" -h specify height (required for -v and -c)\n");
printf(" -V version number\n");
printf("\n");
printf("Example:\n");
printf(" $ `logotool -u logo-file` # uncompress and display a logo\n");
return 1;
}
int main ( int argc , char** argv )
{
int c;
int w=0,h=0;
char *mimg = NULL;
char *cimg = NULL;
char *uimg = NULL;
char *view = NULL;
while((c = getopt(argc, argv, "w:h:Vv:u:c:m:a")) != -1) {
switch(c) {
case 'V': printf("%s\n", VERSION); return 0;
case 'u': uimg = optarg; break;
case 'c': cimg = optarg; break;
case 'm': mimg = optarg; break;
case 'a': rgba = 1; break;
case 'w': w = atoi(optarg); break;
case 'h': h = atoi(optarg); break;
case 'v': view = optarg; break;
}
}
if (mimg) {
char *buf;
if (w==0||h==0) {
printf("You must specify width and height with '-w' and '-h'.\n");
return 1;
}
buf = (char *)malloc(strlen(mimg)+128);
sprintf(buf, "%s.rgb", mimg);
if ( rgb2yuv(mimg, buf, w,h ) ) {
sprintf(buf, "echo pause | mplayer %s.rgb -slave -demuxer rawvideo -rawvideo fps=1:w=%d:h=%d", mimg, w,h);
system(buf);
} else {
printf("Oops\n");
}
free(buf);
} else
if (view) {
char *buf;
if (w==0||h==0) {
printf("You must specify width and height with '-w' and '-h'.\n");
return 1;
}
buf = (char *)malloc(strlen(view)+128);
sprintf(buf, "display -size %dx%d -depth 16 %s", w,h,view);
printf("%s\n", buf);
system(buf);
free(buf);
} else
if (uimg) {
char *dst = (char*)malloc(strlen(uimg)+5);
strcpy(dst, uimg);
strcat(dst, ".gray");
uncompress_image(uimg, dst);
free(dst);
} else
if (cimg) {
char *dst;
if (w==0||h==0) {
printf("You must specify width and height with '-w' and '-h'.\n");
return 1;
}
dst = (char*)malloc(strlen(cimg)+6);
strcpy(dst, cimg);
strcat(dst, ".logo");
compress_image(cimg, dst, w, h);
free(dst);
} else
show_usage();
return 0;
}
-111
View File
@@ -1,111 +0,0 @@
/*
* logotool - tool to modify logo images with simple compression
* Copyright (C) 2007
* esteve <esteve@eslack.org>
*
* 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 3 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, see <http://www.gnu.org/licenses/>.
*/
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
void RGBtoYUV(unsigned short in565, unsigned char *yuv)
{
/* 2 bytes, 565
* RRRRR GGGGGG BBBBB
*/
int i;
i = (in565>>8)&0xFF;
in565 = (in565<<8)&0xFF00;
in565 |= i;
int rgb[3];
rgb[0] = (in565>>11)&0x1F;
rgb[1] = (in565>>5)&0x3F;
rgb[2] = (in565)&0x1F;
rgb[0] = (rgb[0]<<3) | 0x7;
rgb[1] = (rgb[1]<<2) | 0x3;
rgb[2] = (rgb[2]<<3) | 0x7;
/*yuv[0] = 0.299*rgb[0] + 0.587*rgb[1] + 0.114*rgb[2];
yuv[1] = (rgb[2]-yuv[0])*0.565 + 128;
yuv[2] = (rgb[0]-yuv[0])*0.713 + 128;*/
yuv[0] = (0.257 * rgb[0]) + (0.504 * rgb[1]) + (0.098 * rgb[2]) + 16;
yuv[1] = 128 - (0.148 * rgb[0]) - (0.291 * rgb[1]) + (0.439 * rgb[2]);
yuv[2] = 128 + (0.439 * rgb[0]) - (0.368 * rgb[1]) - (0.071 * rgb[2]);
}
// mplayer caca.yuv -demuxer rawvideo -rawvideo fps=1:w=416:h=70 //:i420
int rgb2yuv(char *from, char *to, int width, int height)
{
int fd=open (from, O_RDONLY );
int fout= open ( to, O_CREAT| O_WRONLY , 0660 );
int fsize;
unsigned char* src;
unsigned char* dstY;
unsigned char* dstU;
unsigned char* dstV;
unsigned char YUV[3];
unsigned short inP;
int i,j;
if (fd == -1) {
printf("cannot open %s\n", from);
return 0;
}
if (fout == -1) {
printf("cannot open %s\n", to);
return 0;
}
fsize = lseek ( fd, 0,SEEK_END);
fsize = lseek ( fd, 0,SEEK_CUR);
lseek ( fd,0, SEEK_SET);
src=malloc ( fsize );
dstY=malloc ( (fsize/2) );
dstU=malloc ( (fsize/2) );
dstV=malloc ( (fsize/2) );
for ( i = 0 ; i < fsize; i+=2 ) {
read ( fd, &inP, 2 );
RGBtoYUV ( inP, YUV );
dstY[i>>1]=YUV[0];
dstU[i>>1]=YUV[1];
dstV[i>>1]=YUV[2];
}
for ( i = 0 ; i < (fsize/2); i++ )
write ( fout,&dstY[i], 1);
for ( i = 0 ; i < height ; i+=2 )
for ( j = 0; j < width ; j +=2 )
write ( fout,&dstU[j+(i*width)], 1);
for ( i = 0 ; i < height ; i+=2 )
for ( j = 0; j < width ; j +=2 )
write ( fout,&dstV[j+(i*width)], 1);
return 1;
}
-123
View File
@@ -1,123 +0,0 @@
/*
* logotool - tool to modify logo images with simple compression
* Copyright (C) 2007
* pancake <pancake@youterm.com>
* esteve <esteve@eslack.org>
*
* 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 3 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, see <http://www.gnu.org/licenses/>.
*/
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <getopt.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
int uncompress_image(char *srcf, char *dstf)
{
int fd;
int fout;
int width,height;
int fsize;
char* src;
char* dst;
char* src2;
char* eof;
char *deof;
char* dst2 = NULL;
unsigned char byte;
fd = open( srcf, O_RDONLY );
if (fd == -1) {
printf("Cannot open file '%s'\n", srcf);
return 1;
}
fout = open( dstf, O_CREAT | O_WRONLY , 0660 );
if (fout == -1) {
printf("Cannot open file '%s' for writing\n", dstf);
return 1;
}
fprintf(stderr, "Input file: %s\n", srcf);
fprintf(stderr, "Output file: %s\n", dstf);
fsize = lseek ( fd, 0,SEEK_END);
fsize = lseek ( fd, 0,SEEK_CUR);
lseek ( fd,0, SEEK_SET);
fsize -= 8;
read ( fd, &width, 4 );
read ( fd, &height, 4 );
fprintf(stderr, "Width: %d\nHeight: %d\n",width, height);
fprintf(stderr, "Input Size: %d\n",fsize);
src = malloc ( fsize );
dst = malloc ( width*height*2 );
deof = dst+width*height*2;
if (src == (void *)-1 || dst == (void *)-1 ) {
printf("Cannot malloc\n");
return 1;
}
memset(dst,'\0', width*height*2);
read(fd, src, fsize);
eof = src+fsize;
for(dst2 = dst, src2 = src; src2<eof;) {
//byte = src2[0] & 0xff;
//src2 = src2 + 1;
byte=(*src2++)&0xff;
// [1xxxyyyy] [char] [char]
// copies xxxyyyy times two chars
if (byte > 0x7f) {
int i,j = byte&0x7f;
for(i=0; i++<j; dst2+=2)
memcpy(dst2, src2, 2);
src2+=2;
} else {
if ( byte != 0x00 ) {
byte<<=1;
// fprintf(stderr, "COPYING: %d %d\n", byte, (eof-src2));
if ((dst2+byte >= deof || (src2+byte >= eof))) {
fprintf(stderr, "Break\n");
break;
}
memcpy(dst2, src2, byte);
src2+=byte; dst2+=byte;
}
}
}
fprintf(stderr, "Output Size: %lld\n",(long long int)(dst2-dst));
if ((dst2-dst)!=(width*height*2))
fprintf(stderr, "failed?\n");
write ( fout, dst, width*height*2);
close(fout);
close(fd);
//printf("./logotool -w %d -h %d -v %s || \n", width, height, dstf);
//printf("logotool -w %d -h %d -v %s\n", width, height, dstf);
printf("eval PATH=$PWD:$PATH logotool -w %d -h %d -m %s\n", width, height, dstf);
return 0;
}