annotate old/simple_render/test/LoadTexture/polygon.cpp @ 507:735f76483bb2

Reorganization..
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Mon, 12 Oct 2009 09:39:35 +0900
parents TaskManager/Test/simple_render/test/LoadTexture/polygon.cpp@f64d75473f95
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
90
312b535f121e Initial revision
gongo
parents:
diff changeset
1 #include <iostream>
312b535f121e Initial revision
gongo
parents:
diff changeset
2 #include <SDL_image.h>
312b535f121e Initial revision
gongo
parents:
diff changeset
3 #include <libxml/parser.h>
312b535f121e Initial revision
gongo
parents:
diff changeset
4 #include "polygon.h"
312b535f121e Initial revision
gongo
parents:
diff changeset
5 #include "TaskManager.h"
312b535f121e Initial revision
gongo
parents:
diff changeset
6 using namespace std;
312b535f121e Initial revision
gongo
parents:
diff changeset
7
312b535f121e Initial revision
gongo
parents:
diff changeset
8
312b535f121e Initial revision
gongo
parents:
diff changeset
9 #define redMask 0x00ff0000
312b535f121e Initial revision
gongo
parents:
diff changeset
10 #define greenMask 0x0000ff00
312b535f121e Initial revision
gongo
parents:
diff changeset
11 #define blueMask 0x000000ff
312b535f121e Initial revision
gongo
parents:
diff changeset
12 #define alphaMask 0
312b535f121e Initial revision
gongo
parents:
diff changeset
13 #define width 128
312b535f121e Initial revision
gongo
parents:
diff changeset
14 #define height 128
312b535f121e Initial revision
gongo
parents:
diff changeset
15 #define bpp 32
312b535f121e Initial revision
gongo
parents:
diff changeset
16
312b535f121e Initial revision
gongo
parents:
diff changeset
17
312b535f121e Initial revision
gongo
parents:
diff changeset
18 extern int get_fbdev_addr();
312b535f121e Initial revision
gongo
parents:
diff changeset
19
312b535f121e Initial revision
gongo
parents:
diff changeset
20 extern int decode(char *cont, FILE *outfile);
312b535f121e Initial revision
gongo
parents:
diff changeset
21
96
32be65e25785 *** empty log message ***
akira
parents: 90
diff changeset
22 #define LOAD_TEXTURE_SIZE 128*128*3
90
312b535f121e Initial revision
gongo
parents:
diff changeset
23
312b535f121e Initial revision
gongo
parents:
diff changeset
24 void Polygon::set_data(char *file_name)
312b535f121e Initial revision
gongo
parents:
diff changeset
25 {
312b535f121e Initial revision
gongo
parents:
diff changeset
26 xmlDocPtr doc;
312b535f121e Initial revision
gongo
parents:
diff changeset
27 xmlNodePtr cur;
312b535f121e Initial revision
gongo
parents:
diff changeset
28 Polygon *tmp;
312b535f121e Initial revision
gongo
parents:
diff changeset
29
312b535f121e Initial revision
gongo
parents:
diff changeset
30 doc = xmlParseFile(file_name);
312b535f121e Initial revision
gongo
parents:
diff changeset
31
312b535f121e Initial revision
gongo
parents:
diff changeset
32 cur = xmlDocGetRootElement(doc);
312b535f121e Initial revision
gongo
parents:
diff changeset
33
312b535f121e Initial revision
gongo
parents:
diff changeset
34 xmlStrcmp(cur->name,(xmlChar*)"OBJECT-3D");
312b535f121e Initial revision
gongo
parents:
diff changeset
35
312b535f121e Initial revision
gongo
parents:
diff changeset
36 tmp = this;
312b535f121e Initial revision
gongo
parents:
diff changeset
37
312b535f121e Initial revision
gongo
parents:
diff changeset
38 for (cur=cur->children; cur; cur=cur->next) {
312b535f121e Initial revision
gongo
parents:
diff changeset
39 if (!xmlStrcmp(cur->name,(xmlChar*)"surface")) {
312b535f121e Initial revision
gongo
parents:
diff changeset
40 tmp->create_data(cur);
312b535f121e Initial revision
gongo
parents:
diff changeset
41 if(cur->next->next) {
312b535f121e Initial revision
gongo
parents:
diff changeset
42 tmp->add_next();
312b535f121e Initial revision
gongo
parents:
diff changeset
43 tmp = tmp->next;
312b535f121e Initial revision
gongo
parents:
diff changeset
44 }
312b535f121e Initial revision
gongo
parents:
diff changeset
45 }
312b535f121e Initial revision
gongo
parents:
diff changeset
46 }
312b535f121e Initial revision
gongo
parents:
diff changeset
47 xmlFreeDoc(doc);
312b535f121e Initial revision
gongo
parents:
diff changeset
48 }
312b535f121e Initial revision
gongo
parents:
diff changeset
49
312b535f121e Initial revision
gongo
parents:
diff changeset
50 void Polygon::create_data(xmlNodePtr cur)
312b535f121e Initial revision
gongo
parents:
diff changeset
51 {
312b535f121e Initial revision
gongo
parents:
diff changeset
52 size = atoi((char *)xmlGetProp(cur,(xmlChar *)"size"));
312b535f121e Initial revision
gongo
parents:
diff changeset
53 name = (char *)xmlGetProp(cur,(xmlChar *)"name");
312b535f121e Initial revision
gongo
parents:
diff changeset
54 parent_name = (char *)xmlGetProp(cur,(xmlChar *)"parent");
312b535f121e Initial revision
gongo
parents:
diff changeset
55 next = NULL;
312b535f121e Initial revision
gongo
parents:
diff changeset
56
312b535f121e Initial revision
gongo
parents:
diff changeset
57 data = new float[size*3*3];
312b535f121e Initial revision
gongo
parents:
diff changeset
58
312b535f121e Initial revision
gongo
parents:
diff changeset
59 get_data(cur->children);
312b535f121e Initial revision
gongo
parents:
diff changeset
60 }
312b535f121e Initial revision
gongo
parents:
diff changeset
61
312b535f121e Initial revision
gongo
parents:
diff changeset
62 void Polygon::add_next()
312b535f121e Initial revision
gongo
parents:
diff changeset
63 {
312b535f121e Initial revision
gongo
parents:
diff changeset
64 Polygon *p;
312b535f121e Initial revision
gongo
parents:
diff changeset
65 p = new Polygon;
312b535f121e Initial revision
gongo
parents:
diff changeset
66
312b535f121e Initial revision
gongo
parents:
diff changeset
67 next = p;
312b535f121e Initial revision
gongo
parents:
diff changeset
68 }
312b535f121e Initial revision
gongo
parents:
diff changeset
69
312b535f121e Initial revision
gongo
parents:
diff changeset
70
312b535f121e Initial revision
gongo
parents:
diff changeset
71 void Polygon::get_data(xmlNodePtr cur)
312b535f121e Initial revision
gongo
parents:
diff changeset
72 {
312b535f121e Initial revision
gongo
parents:
diff changeset
73 char *cont;
312b535f121e Initial revision
gongo
parents:
diff changeset
74 HTaskPtr task_load_texture = NULL;
312b535f121e Initial revision
gongo
parents:
diff changeset
75 unsigned int fbdev_addr;
312b535f121e Initial revision
gongo
parents:
diff changeset
76 for(;cur;cur=cur->next) {
312b535f121e Initial revision
gongo
parents:
diff changeset
77 if(!xmlStrcmp(cur->name,(xmlChar*)"image")) {
312b535f121e Initial revision
gongo
parents:
diff changeset
78 char image_name[20] = "/tmp/image_XXXXXX";
312b535f121e Initial revision
gongo
parents:
diff changeset
79 int fd = mkstemp(image_name);
312b535f121e Initial revision
gongo
parents:
diff changeset
80 FILE *outfile = fdopen(fd, "wb");
312b535f121e Initial revision
gongo
parents:
diff changeset
81 if(NULL == outfile) {
312b535f121e Initial revision
gongo
parents:
diff changeset
82 cout << "error open file\n";
312b535f121e Initial revision
gongo
parents:
diff changeset
83 }
312b535f121e Initial revision
gongo
parents:
diff changeset
84 cont = (char *)xmlNodeGetContent(cur);
312b535f121e Initial revision
gongo
parents:
diff changeset
85 decode(cont, outfile);
312b535f121e Initial revision
gongo
parents:
diff changeset
86 fclose(outfile);
312b535f121e Initial revision
gongo
parents:
diff changeset
87
312b535f121e Initial revision
gongo
parents:
diff changeset
88 texture_image = IMG_Load(image_name);
312b535f121e Initial revision
gongo
parents:
diff changeset
89 //texture_image = SDL_LoadBMP(image_name);
312b535f121e Initial revision
gongo
parents:
diff changeset
90 if(unlink(image_name)) {
312b535f121e Initial revision
gongo
parents:
diff changeset
91 cout << "unlink error\n";
312b535f121e Initial revision
gongo
parents:
diff changeset
92 }
312b535f121e Initial revision
gongo
parents:
diff changeset
93
312b535f121e Initial revision
gongo
parents:
diff changeset
94 }
312b535f121e Initial revision
gongo
parents:
diff changeset
95 }
312b535f121e Initial revision
gongo
parents:
diff changeset
96
312b535f121e Initial revision
gongo
parents:
diff changeset
97 //void *_pixels = new Uint32[width*height*32/8];
312b535f121e Initial revision
gongo
parents:
diff changeset
98 void *_pixels;
312b535f121e Initial revision
gongo
parents:
diff changeset
99 posix_memalign((void**)&_pixels, 16, 3*128*128);
312b535f121e Initial revision
gongo
parents:
diff changeset
100
312b535f121e Initial revision
gongo
parents:
diff changeset
101 memcpy(_pixels, texture_image->pixels, 3*128*128);
312b535f121e Initial revision
gongo
parents:
diff changeset
102
321
f64d75473f95 merge 317
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 318
diff changeset
103 // screen を返すけど、いつか free して
90
312b535f121e Initial revision
gongo
parents:
diff changeset
104 //screen = SDL_CreateRGBSurfaceFrom(_pixels, width, height, 32,
312b535f121e Initial revision
gongo
parents:
diff changeset
105 //width*4, redMask, greenMask,
312b535f121e Initial revision
gongo
parents:
diff changeset
106 // blueMask,alphaMask);
312b535f121e Initial revision
gongo
parents:
diff changeset
107
312b535f121e Initial revision
gongo
parents:
diff changeset
108 fbdev_addr = get_fbdev_addr();
312b535f121e Initial revision
gongo
parents:
diff changeset
109 task_load_texture
312b535f121e Initial revision
gongo
parents:
diff changeset
110 = manager->create_task(0,LOAD_TEXTURE_SIZE,
312b535f121e Initial revision
gongo
parents:
diff changeset
111 //(unsigned int)texture_image->pixels
312b535f121e Initial revision
gongo
parents:
diff changeset
112 (unsigned int)_pixels ,fbdev_addr,NULL);
312b535f121e Initial revision
gongo
parents:
diff changeset
113 task_load_texture->set_cpu(CPU_SPE);
312b535f121e Initial revision
gongo
parents:
diff changeset
114 task_load_texture->spawn();
312b535f121e Initial revision
gongo
parents:
diff changeset
115 }
312b535f121e Initial revision
gongo
parents:
diff changeset
116