Changeset 732 for cpp/frams/_demos/printconvmap.cpp
- Timestamp:
- 02/15/18 00:42:07 (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
cpp/frams/_demos/printconvmap.cpp
r348 r732 1 1 // This file is a part of Framsticks SDK. http://www.framsticks.com/ 2 // Copyright (C) 1999-201 5Maciej Komosinski and Szymon Ulatowski.2 // Copyright (C) 1999-2018 Maciej Komosinski and Szymon Ulatowski. 3 3 // See LICENSE.txt for details. 4 4 … … 6 6 #include <stdio.h> 7 7 #include <frams/util/multimap.h> 8 #include <frams/model/model.h> 8 9 9 10 #define GEN1MAX 15 10 11 11 void printN(const char* t, int maxlen)12 void printN(const char* t, int maxlen) 12 13 { 13 while(maxlen-- > 0)14 if (*t) putchar(*(t++));15 else putchar(' ');14 while (maxlen-- > 0) 15 if (*t) putchar(*(t++)); 16 else putchar(' '); 16 17 } 17 18 18 void printN(char t, int maxlen)19 void printN(char t, int maxlen) 19 20 { 20 while(maxlen-- > 0) putchar(t);21 while (maxlen-- > 0) putchar(t); 21 22 } 22 23 23 void printmapping(const char* gen1, int len1, const MultiRange &mr,const char* gen2,int len2)24 void printmapping(const char* gen1, int len1, const MultiRange &mr, const char* gen2, int len2) 24 25 { 25 printN(' ',GEN1MAX-len1);26 printN(gen1,len1);27 printf(" : ");28 int i;29 for(i=0;i<len2;i++)30 if (mr.contains(i))31 putchar(gen2[i]);32 else33 putchar('.');34 putchar('\n');26 printN(' ', GEN1MAX - len1); 27 printN(gen1, len1); 28 printf(" : "); 29 int i; 30 for (i = 0; i < len2; i++) 31 if (mr.contains(i)) 32 putchar(gen2[i]); 33 else 34 putchar('.'); 35 putchar('\n'); 35 36 } 36 37 37 38 void stripstring(SString &str) 38 39 { 39 char *t=str.directWrite();40 for(;*t;t++)41 if (strchr("\n\r\t",*t)) *t=' ';40 char *t = str.directWrite(); 41 for (; *t; t++) 42 if (strchr("\n\r\t", *t)) *t = ' '; 42 43 } 43 44 44 void printConvMap(const SString& gen1, const SString& gen2,const MultiMap& map)45 void printConvMap(const SString& gen1, const SString& gen2, const MultiMap& map) 45 46 { 46 int y,y2,len1;47 int id=0;48 if (map.isEmpty())47 int y, y2, len1; 48 int id = 0; 49 if (map.isEmpty()) 49 50 { 50 printf("{ empty }\n");51 return;51 printf("{ empty }\n"); 52 return; 52 53 } 53 len1=gen1.len();54 SString g1=gen1;55 stripstring(g1);56 SString g2=gen2;57 stripstring(g2);58 const char* g=g1.c_str();59 y=0;60 MultiRange *mr;61 MultiRange emptyrange;62 printN(' ',GEN1MAX);63 printf(" %s\n",g2.c_str());64 int begin=map.getBegin();65 int end=map.getEnd();66 while(y<len1)54 len1 = gen1.len(); 55 SString g1 = gen1; 56 stripstring(g1); 57 SString g2 = gen2; 58 stripstring(g2); 59 const char* g = g1.c_str(); 60 y = 0; 61 MultiRange *mr; 62 MultiRange emptyrange; 63 printN(' ', GEN1MAX); 64 printf(" %s\n", g2.c_str()); 65 int begin = map.getBegin(); 66 int end = map.getEnd(); 67 while (y < len1) 67 68 { 68 if (y<begin)69 if (y < begin) 69 70 { 70 mr=&emptyrange;71 y2=begin;71 mr = &emptyrange; 72 y2 = begin; 72 73 } 73 else if (y>end)74 else if (y > end) 74 75 { 75 mr=&emptyrange;76 y2=len1;76 mr = &emptyrange; 77 y2 = len1; 77 78 } 78 else {79 id=map.findMappingId(y);80 mr=&map.getMapping(id)->to;81 y2=map.getMapping(id+1)->begin;79 else { 80 id = map.findMappingId(y); 81 mr = &map.getMapping(id)->to; 82 y2 = map.getMapping(id + 1)->begin; 82 83 } 83 if ((y2-y) > GEN1MAX) y2=y+GEN1MAX;84 if (y2>(y+len1)) y2=y+len1;85 printmapping(g+y,y2-y,*mr,g2.c_str(),g2.len());86 y=y2;84 if ((y2 - y) > GEN1MAX) y2 = y + GEN1MAX; 85 if (y2 > (y + len1)) y2 = y + len1; 86 printmapping(g + y, y2 - y, *mr, g2.c_str(), g2.len()); 87 y = y2; 87 88 } 88 89 } 89 90 90 void printModelMap(const SString& gen1,const MultiMap& map)91 const MultiMap & getModelDisplayMap() 91 92 { 92 SString g2("012345678901234567890123456789"); 93 printN(' ',GEN1MAX); 94 printf(" Parts Joints Neurons\n"); 95 printConvMap(gen1,g2,map); 93 static MultiMap display_map; 94 if (display_map.isEmpty()) 95 { 96 for (int i = 0; i < 10; i++) 97 { 98 display_map.add(Model::partToMap(i), Model::partToMap(i), i, i); 99 display_map.add(Model::jointToMap(i), Model::jointToMap(i), 10 + i, 10 + i); 100 display_map.add(Model::neuroToMap(i), Model::neuroToMap(i), 20 + i, 20 + i); 101 } 102 } 103 return display_map; 96 104 } 105 106 void printModelMap(const SString& gen1, const MultiMap& map) 107 { 108 MultiMap combined_map; 109 combined_map.addCombined(map, getModelDisplayMap()); 110 SString g2("012345678901234567890123456789"); 111 printN(' ', GEN1MAX); 112 printf(" Parts Joints Neurons\n"); 113 printConvMap(gen1, g2, combined_map); 114 }
Note: See TracChangeset
for help on using the changeset viewer.