// 描画を行う void display(void) { glClear(GL_COLOR_BUFFER_BIT); // 描画内容のクリア // ピクセル単位で描画色を決定するループ処理 for(int y = (-halfHeight); y <= halfHeight; y++ ) { for(int x = (-halfWidth); x <= halfWidth; x++ ) { Vector3d colorVec(0,0,0); Vector3d colorVecTmp(0,0,0); // x, y 座標の色を取得する for(int xi = 0; xi<3; xi++) { for(int yi = 0; yi<3; yi++) { getPixcelColor(x + xi * 1.0/3, y + yi * 1.0/3, colorVecTmp); colorVec += colorVecTmp; } } colorVec = colorVec * (1.0/9); //取得した色で、描画色を設定する glColor3d(colorVec.x, colorVec.y, colorVec.z); // (x, y) の画素を描画 glBegin(GL_POINTS); glVertex2i( x, y ); glEnd( ); } } glFlush(); }
void TexView::ParseAll(int start,int finish,bool IsInteractive) { BFont font(be_fixed_font); font.SetSize(prefs->FontSize); int text_length = TextLength(); if(text_length > 0) { vector<int> eols; vector<int> sols; FillSolEol(sols,eols,start,finish); int i; int size; if(!IsInteractive) { size = text_length; vector<rgb_color> colorVec(size,prefs->fg_color); for(i=0;i<sols.size();i++) { ParseLine(sols[i],eols[i],colorVec); } int offset_size=1; vector<int> offsets; offsets.push_back(0); for(i=1;i<size;i++) { if(colorVec[i-1] != colorVec[i]) { offsets.push_back(i); offset_size++; } } text_run_array* tra = (text_run_array*)malloc(sizeof(text_run_array)*(size)); tra->count = offset_size; for(i=0;i<offset_size;i++) { tra->runs[i].color=colorVec[offsets[i]]; tra->runs[i].font=font; tra->runs[i].offset=offsets[i]; } SetRunArray(0,text_length-1,tra); } else { int32 start,finish; GetSelection(&start,&finish); Select(start,start); for(i=0;i<sols.size();i++) { IParseLine(sols[i],eols[i]); } Select(start,finish); } } }
void BlobGame::updateVision(){ std::vector<Tile*> tiles2; std::vector<Tile*> tiles3; std::vector<Enemy*> enemies; Sprite2d* sprite; Vector3 colorVec(150,150,150); Vector3 colorVec2(70,70,70); Unit* unit; int i; std::vector<Tile*> tiles = *m_Level->getTiles(); for(i = 0;i < m_Level->getNumberOfHorizontalTiles()* m_Level->getNumberOfVerticalTiles();i++){ if(!ContainsFlags(tiles[i]->getTileTypes(),Hole) && tiles[i]->getSprite()->getColor() != colorVec2){ tiles[i]->getSprite()->setColor(colorVec2); } } for(i = 0;i < m_GameObjects->size();i++){ unit = (Unit*)(*m_GameObjects)[i]; if(unit->getAllegiance() == "Foe"){ unit->getSprite()->setHiden(true); enemies.push_back((Enemy*)unit); } else if(unit->getType() == "Blob"){ tiles3 = getSquareVision(m_Level,ALLY_VISION,unit->getCurrentTile()); for(int j = 0;j < tiles3.size();j++){ if(tiles2.size() == 0){ tiles2.push_back(tiles3[j]); if(!ContainsFlags(tiles3[j]->getTileTypes(),Hole) && tiles3[j]->getSprite()->getColor() != colorVec){ tiles3[j]->getSprite()->setColor(150,150,150,255); } continue; } for(int k = 0;k < tiles2.size();k++){ if(tiles2[k] == tiles3[j]){ break; } else if(k == tiles2.size()-1){ tiles2.push_back(tiles3[j]); if(!ContainsFlags(tiles3[j]->getTileTypes(),Hole) && tiles3[j]->getSprite()->getColor() != colorVec){ tiles3[j]->getSprite()->setColor(150,150,150,255); } } } } } } for(i= 0;i < tiles2.size();i++){ for(int k = 0;k < enemies.size();k++){ if(tiles2[i] == enemies[k]->getCurrentTile()){ enemies[k]->getSprite()->setHiden(false); } } } }
void TexView::IParseLine(int sol,int eol) { int size = eol-sol+1; vector<rgb_color> colorVec(size,prefs->fg_color); for(int k=0;k<size;k++) { colorVec[k] = prefs->fg_color; } int i; int offset = sol; int pos; int text_length = TextLength(); //Setup some defaults.... ITwoColorPlateau('\'',sol,eol,prefs->comma_color,colorVec); ITwoColorPlateau('`',sol,eol,prefs->comma_color,colorVec); ITwoColorPlateau('\\',sol,eol,prefs->punc_symbol_color,colorVec); for(i=sol;i<eol;i++) { if(ByteAt(i) == '[' || ByteAt(i) == ']') { if(i-1 >= 0 && ByteAt(i-1) == '\\') { colorVec[i-1-sol] = prefs->punc_symbol_color; } colorVec[i-sol] = prefs->punc_symbol_color; } else if(ByteAt(i) == '&' || ByteAt(i) == '{' || ByteAt(i) == '}')// { if(i-1 >= 0 && ByteAt(i-1) == '\\') { colorVec[i-1-sol] = prefs->punc_symbol_color; } colorVec[i-sol] = prefs->punc_symbol_color; } else if(ByteAt(i) == '$') { if(i-1 >= 0 && ByteAt(i-1) == '\\') { colorVec[i-1-sol] = prefs->fg_color; colorVec[i-sol] = prefs->fg_color; } } else if(ByteAt(i) == '\\' && i+1 < eol) { if(ByteAt(i+1) == '#') { colorVec[i-sol] = prefs->punc_symbol_color; colorVec[i+1-sol] = prefs->punc_symbol_color; }else if(ByteAt(i+1) == '\'' || ByteAt(i+1) == '`') { colorVec[i-sol] = prefs->fg_color; colorVec[i+1-sol] = prefs->fg_color; } } } offset = sol; while((pos = FindFirstOnLine('%',offset,eol))>= 0 && offset < eol) { if(pos - 1 >= 0 && ByteAt(pos-1) == '\\') { colorVec[pos-1-sol] = prefs->punc_symbol_color; colorVec[pos-sol] = prefs->punc_symbol_color; } else { for(i=pos;i<eol;i++) colorVec[i-sol] = prefs->comment_color; break; } offset= pos+1; } //START COLOURING*********************************** BFont default_font(be_fixed_font); default_font.SetSize(prefs->FontSize); int plLength=0; int plStart=0; for(i=sol;i<eol;i++) { if(i == sol) { plLength = 1; plStart = i; } else if(colorVec[i-sol] != colorVec[i-sol-1]) { //if(colorVec[i-sol-1] != old_colors[i-sol]) SetFontAndColor(plStart,plStart+plLength,&default_font,B_FONT_ALL,&colorVec[i-sol-1]); plLength = 1; plStart = i; } else { plLength++; } } if(plLength > 0) SetFontAndColor(plStart,plStart+plLength,&default_font,B_FONT_ALL,&colorVec[i-sol-1]); }