Example #1
0
long
arg_ascii_char (int n)
{
  CHECK_ARG (n, CHARACTER_P);
  {
    SCHEME_OBJECT object = (ARG_REF (n));
    if (! (CHAR_TO_ASCII_P (object)))
      error_bad_range_arg (n);
    return (CHAR_TO_ASCII (object));
  }
}
Example #2
0
void Window::border(float *tex, float *col, float *bgCol)
{
	unsigned tileW = (4*scale);
	unsigned tileH = (6*scale);
	unsigned width = rect.Width, height = rect.Height;
	unsigned nWide = width/tileW;
	unsigned nHigh = height/tileH;
	int tl,tr,br,bl,h,v,jl,jr;
	
	switch(borderStyle)
	{
		case Border_Single:
			tl=CORNER_TOP_LEFT_SINGLE,tr=CORNER_TOP_RIGHT_SINGLE;
			br=CORNER_BOTTOM_RIGHT_SINGLE,bl=CORNER_BOTTOM_LEFT_SINGLE;
			h=LINE_HORIZONTAL_SINGLE,v=LINE_VERTICAL_SINGLE;
			jl=JOINT_SINGLE_LEFT_SINGLE ,jr=JOINT_SINGLE_RIGHT_SINGLE;
			break;
		case Border_Double:
			tl=CORNER_TOP_LEFT_DOUBLE,tr=CORNER_TOP_RIGHT_DOUBLE;
			br=CORNER_BOTTOM_RIGHT_DOUBLE,bl=CORNER_BOTTOM_LEFT_DOUBLE;
			h=LINE_HORIZONTAL_DOUBLE,v=LINE_VERTICAL_DOUBLE;
			jl=JOINT_DOUBLE_LEFT_SINGLE ,jr= JOINT_DOUBLE_RIGHT_SINGLE;	
			break;
		case Border_Block:
			tl=BLOCK,tr=BLOCK,br=BLOCK,bl=BLOCK,h=BLOCK,v=BLOCK;
			jl=BLOCK,jr=BLOCK;
			break;
		default:
			return;
			break;
	}
	// top left
	{
	Ascii a(tl+16,borderColour,Colour(0,0,0));
	int texI = ARRAY2D(0,0,nWide)*8;
	int colI = ARRAY2D(0,0,nWide)*16;
	displayTile(&tex[texI],&col[colI],&bgCol[colI],a);
	}

	// top right
	{
	Ascii a(tr+16,borderColour,Colour(0,0,0));
	int texI = ARRAY2D((nWide-1),0,nWide)*8;
	int colI = ARRAY2D((nWide-1),0,nWide)*16;
	displayTile(&tex[texI],&col[colI],&bgCol[colI],a);
	}
		
	// bottom left
	{
	Ascii a(bl+16,borderColour,Colour(0,0,0));
	int texI = ARRAY2D(0,(nHigh-1),nWide)*8;
	int colI = ARRAY2D(0,(nHigh-1),nWide)*16;
	displayTile(&tex[texI],&col[colI],&bgCol[colI],a);
	}
	
	// bottom right
	{
	Ascii a(br+16,borderColour,Colour(0,0,0));
	int texI = ARRAY2D((nWide-1),(nHigh-1),nWide)*8;
	int colI = ARRAY2D((nWide-1),(nHigh-1),nWide)*16;
	displayTile(&tex[texI],&col[colI],&bgCol[colI],a);
	}
	
	// vertical
	for(int j=1;j<nHigh-1;j++)
	{
		Ascii b(v+16,borderColour,Colour(0,0,0));
		int texI = ARRAY2D(0,j,nWide)*8;
		int colI = ARRAY2D(0,j,nWide)*16;
		displayTile(&tex[texI],&col[colI],&bgCol[colI],b);
		texI = ARRAY2D((nWide-1),j,nWide)*8;
		colI = ARRAY2D((nWide-1),j,nWide)*16;
		displayTile(&tex[texI],&col[colI],&bgCol[colI],b);
	}
	
	// horizontal
	int centre = round(nWide/2.0)-round(centreLabel.getString().size()/2.0)-1;
	int left = 1;
	int right = nWide-rightLabel.getString().size()-3;
	for(int i=1;i<nWide-1;i++)
	{
		Ascii b, c = Ascii(h+16,borderColour,Colour(0,0,0));
		
		if(centreLabel.getString().size() != 0 && i >= centre-1 && i-centre <= centreLabel.getString().size()+1)
		{ // centre
//			printf("Centre label: %s\n",centreLabel.getString().c_str());
			if(i == centre)
				b = Ascii(jr+16,borderColour,Colour(0,0,0)); 
			else if(i-centre == centreLabel.getString().size()+1)
				b = Ascii(jl+16,borderColour,Colour(0,0,0)); 
			else
				b = Ascii(CHAR_TO_ASCII(centreLabel.getString()[i-centre-1])+16,centreLabel.getColour(),Colour(0,0,0)); 
		}
		else if(leftLabel.getString().size() != 0 && i >= 1 && i-left <= leftLabel.getString().size()+1)
		{ // left
			if(i == left)
				b = Ascii(jr+16,borderColour,Colour(0,0,0)); 
			else if(i-left == leftLabel.getString().size()+1)
				b = Ascii(jl+16,borderColour,Colour(0,0,0)); 
			else
				b = Ascii(CHAR_TO_ASCII(leftLabel.getString()[i-left-1])+16,leftLabel.getColour(),Colour(0,0,0)); 
		}
		else if(rightLabel.getString().size() != 0 && i >= right-1 && i-right <= rightLabel.getString().size()+1)
		{ // right
			if(i == right)
				b = Ascii(jr+16,borderColour,Colour(0,0,0)); 
			else if(i-right == rightLabel.getString().size()+1)
				b = Ascii(jl+16,borderColour,Colour(0,0,0)); 
			else
				b = Ascii(CHAR_TO_ASCII(rightLabel.getString()[i-right-1])+16,rightLabel.getColour(),Colour(0,0,0)); 
		}
		else
			b = c;
		int texI = ARRAY2D(i,0,nWide)*8;
		int colI = ARRAY2D(i,0,nWide)*16;
		displayTile(&tex[texI],&col[colI],&bgCol[colI],b);
		texI = ARRAY2D(i,(nHigh-1),nWide)*8;
		colI = ARRAY2D(i,(nHigh-1),nWide)*16;
		displayTile(&tex[texI],&col[colI],&bgCol[colI],c);
	}

}