示例#1
0
// 描画を行う
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();
}
示例#2
0
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);
		}
	}
}
示例#3
0
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);
			}
		}
	}
}
示例#4
0
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]);	
}