annotate old/simple_render/test/LoadTexture/base64_de.cpp @ 1995:c961cc335471 draft

merge
author Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
date Mon, 21 Apr 2014 00:02:36 +0900
parents 3bc98f6d31ff
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
90
312b535f121e Initial revision
gongo
parents:
diff changeset
1 #include <stdio.h>
312b535f121e Initial revision
gongo
parents:
diff changeset
2 //#include <iostream>
312b535f121e Initial revision
gongo
parents:
diff changeset
3 #include <fstream>
312b535f121e Initial revision
gongo
parents:
diff changeset
4 using namespace std;
312b535f121e Initial revision
gongo
parents:
diff changeset
5
312b535f121e Initial revision
gongo
parents:
diff changeset
6 class tagTT
312b535f121e Initial revision
gongo
parents:
diff changeset
7 {
312b535f121e Initial revision
gongo
parents:
diff changeset
8 public:
312b535f121e Initial revision
gongo
parents:
diff changeset
9 unsigned char buf;
312b535f121e Initial revision
gongo
parents:
diff changeset
10 char *cont;
312b535f121e Initial revision
gongo
parents:
diff changeset
11 int nlen;
312b535f121e Initial revision
gongo
parents:
diff changeset
12 };
312b535f121e Initial revision
gongo
parents:
diff changeset
13
312b535f121e Initial revision
gongo
parents:
diff changeset
14
312b535f121e Initial revision
gongo
parents:
diff changeset
15 unsigned char CtoNum(int c)
312b535f121e Initial revision
gongo
parents:
diff changeset
16 {
312b535f121e Initial revision
gongo
parents:
diff changeset
17 if (c >= 'A' && c <= 'Z') return c-'A';
312b535f121e Initial revision
gongo
parents:
diff changeset
18 if (c >= 'a' && c <= 'z') return (c - 'a')+26;
312b535f121e Initial revision
gongo
parents:
diff changeset
19 if (c >= '0' && c <= '9') return (c - '0')+52;
312b535f121e Initial revision
gongo
parents:
diff changeset
20 if (c == '+') return 62;
312b535f121e Initial revision
gongo
parents:
diff changeset
21 if (c == '/') return 63;
312b535f121e Initial revision
gongo
parents:
diff changeset
22 return 0;
312b535f121e Initial revision
gongo
parents:
diff changeset
23 }
312b535f121e Initial revision
gongo
parents:
diff changeset
24
312b535f121e Initial revision
gongo
parents:
diff changeset
25
312b535f121e Initial revision
gongo
parents:
diff changeset
26 int GetNumB64(tagTT &pWork)
312b535f121e Initial revision
gongo
parents:
diff changeset
27 {
312b535f121e Initial revision
gongo
parents:
diff changeset
28 char wr;
312b535f121e Initial revision
gongo
parents:
diff changeset
29 unsigned char w;
312b535f121e Initial revision
gongo
parents:
diff changeset
30 unsigned char r;
312b535f121e Initial revision
gongo
parents:
diff changeset
31
312b535f121e Initial revision
gongo
parents:
diff changeset
32 wr = *pWork.cont;
312b535f121e Initial revision
gongo
parents:
diff changeset
33 pWork.cont++;
312b535f121e Initial revision
gongo
parents:
diff changeset
34 if (wr=='\0' || wr=='=')
312b535f121e Initial revision
gongo
parents:
diff changeset
35 return -1;
312b535f121e Initial revision
gongo
parents:
diff changeset
36
312b535f121e Initial revision
gongo
parents:
diff changeset
37 while(wr=='\n' || wr=='\t')
312b535f121e Initial revision
gongo
parents:
diff changeset
38 {
312b535f121e Initial revision
gongo
parents:
diff changeset
39 wr = *pWork.cont;
312b535f121e Initial revision
gongo
parents:
diff changeset
40 pWork.cont++;
312b535f121e Initial revision
gongo
parents:
diff changeset
41 }
312b535f121e Initial revision
gongo
parents:
diff changeset
42
312b535f121e Initial revision
gongo
parents:
diff changeset
43 w = CtoNum(wr);
312b535f121e Initial revision
gongo
parents:
diff changeset
44 if (pWork.nlen == 0)
312b535f121e Initial revision
gongo
parents:
diff changeset
45 {
312b535f121e Initial revision
gongo
parents:
diff changeset
46 unsigned char w2;
312b535f121e Initial revision
gongo
parents:
diff changeset
47
312b535f121e Initial revision
gongo
parents:
diff changeset
48 wr = *pWork.cont;
312b535f121e Initial revision
gongo
parents:
diff changeset
49 pWork.cont++;
312b535f121e Initial revision
gongo
parents:
diff changeset
50 if (wr!='\0' && wr!='=')
312b535f121e Initial revision
gongo
parents:
diff changeset
51 w2 = CtoNum(wr);
312b535f121e Initial revision
gongo
parents:
diff changeset
52 else
312b535f121e Initial revision
gongo
parents:
diff changeset
53 w2 = 0;
312b535f121e Initial revision
gongo
parents:
diff changeset
54
312b535f121e Initial revision
gongo
parents:
diff changeset
55 pWork.buf = w << 2;
312b535f121e Initial revision
gongo
parents:
diff changeset
56 w = w2;
312b535f121e Initial revision
gongo
parents:
diff changeset
57 pWork.nlen = 6;
312b535f121e Initial revision
gongo
parents:
diff changeset
58 }
312b535f121e Initial revision
gongo
parents:
diff changeset
59
312b535f121e Initial revision
gongo
parents:
diff changeset
60 pWork.nlen -= 2;
312b535f121e Initial revision
gongo
parents:
diff changeset
61
312b535f121e Initial revision
gongo
parents:
diff changeset
62 r = pWork.buf | (w >> pWork.nlen);
312b535f121e Initial revision
gongo
parents:
diff changeset
63
312b535f121e Initial revision
gongo
parents:
diff changeset
64 pWork.buf = (w << (8 - pWork.nlen));
312b535f121e Initial revision
gongo
parents:
diff changeset
65 return r;
312b535f121e Initial revision
gongo
parents:
diff changeset
66 }
312b535f121e Initial revision
gongo
parents:
diff changeset
67
312b535f121e Initial revision
gongo
parents:
diff changeset
68
312b535f121e Initial revision
gongo
parents:
diff changeset
69 //int decode(char *cont, char *file_name)
312b535f121e Initial revision
gongo
parents:
diff changeset
70 int decode(char *cont, FILE *outfile)
312b535f121e Initial revision
gongo
parents:
diff changeset
71 {
312b535f121e Initial revision
gongo
parents:
diff changeset
72 int rw;
312b535f121e Initial revision
gongo
parents:
diff changeset
73 tagTT work;
312b535f121e Initial revision
gongo
parents:
diff changeset
74
312b535f121e Initial revision
gongo
parents:
diff changeset
75 //ofstream outfile(file_name);
312b535f121e Initial revision
gongo
parents:
diff changeset
76
312b535f121e Initial revision
gongo
parents:
diff changeset
77 work.buf = 0;
312b535f121e Initial revision
gongo
parents:
diff changeset
78 work.nlen = 0;
312b535f121e Initial revision
gongo
parents:
diff changeset
79 work.cont = cont;
312b535f121e Initial revision
gongo
parents:
diff changeset
80
312b535f121e Initial revision
gongo
parents:
diff changeset
81 rw = GetNumB64(work);
312b535f121e Initial revision
gongo
parents:
diff changeset
82 while ( rw != -1 )
312b535f121e Initial revision
gongo
parents:
diff changeset
83 {
312b535f121e Initial revision
gongo
parents:
diff changeset
84 //outfile << (char)rw;
312b535f121e Initial revision
gongo
parents:
diff changeset
85 putc(rw, outfile);
312b535f121e Initial revision
gongo
parents:
diff changeset
86 rw = GetNumB64(work);
312b535f121e Initial revision
gongo
parents:
diff changeset
87 }
312b535f121e Initial revision
gongo
parents:
diff changeset
88
312b535f121e Initial revision
gongo
parents:
diff changeset
89 //outfile.close();
312b535f121e Initial revision
gongo
parents:
diff changeset
90
312b535f121e Initial revision
gongo
parents:
diff changeset
91 return 0;
312b535f121e Initial revision
gongo
parents:
diff changeset
92 }