Пример #1
0
void DViewColor::btnColourClicked( wxCommandEvent& )
{
	wxColourData data;
	data.SetChooseFull( true );
	wxColour colour( atoi( editRed->GetValue( ).ToAscii( ) ), atoi( editGreen->GetValue( ).ToAscii( ) ), atoi( editBlue->GetValue( ).ToAscii( ) ) );
	data.SetCustomColour( 0, colour );
	for ( int i = 1; i < 16; ++i )
	{
		wxColour color( i * 16, i * 16, i * 16 );
		data.SetCustomColour( i, color );
	}

	wxColourDialog dialog( this, &data );
	if ( dialog.ShowModal( ) == wxID_OK )
	{
		char numstr[255];
		wxColourData retData = dialog.GetColourData( );
		wxColour col = retData.GetColour( );
		strcpy( numstr, inttoa( col.Red( ) ) );
		editRed->SetValue( wxS( numstr ) );
		strcpy( numstr, inttoa( col.Green( ) ) );
		editGreen->SetValue( wxS( numstr ) );
		strcpy( numstr, inttoa( col.Blue( ) ) );
		editBlue->SetValue( wxS( numstr ) );
	}
#if 0
	ZOCDlg dlg( this );
	dlg.SetZOCStr( ViewColorDlgData.zocstr );
	if ( dlg.ShowModal() == wxID_OK )
	{
		strcpy( ViewColorDlgData.zocstr, dlg.GetZOCStr( ) );
		lblZOC->SetLabel( wxS( dlg.GetZOCStr( ) ) );
	}
#endif
}
Пример #2
0
void DViewColor::SetupDialog( )
{
	// edits
	editName->SetValue( wxS( ViewColorDlgData.editName ) );
	editRed->SetValue( wxS( ViewColorDlgData.editRed ) );
	editGreen->SetValue( wxS( ViewColorDlgData.editGreen ) );
	editBlue->SetValue( wxS( ViewColorDlgData.editBlue ) );

	NotInitialized = FALSE;
	return;
}
Пример #3
0
void NavalUnit::drawCounter( wxDC* dc, int x, int y, bool border /* = true */ )
{
	wxColor bgnd = _naval_armed_force[getSide( )][getSubType( )].crBg;
	wxColor fgnd = _naval_armed_force[getSide( )][getSubType( )].crFg;
	wxColor bgndtop = *wxWHITE;
	dc->SetFont( fnt );
	// draw counter
#if 0
	dc->SetPen( *wxBLACK_PEN );
	dc->SetBrush( wxBrush( bgnd, wxSOLID ) );
	dc->DrawRectangle( x, y, 28, 27 );
#endif
	if ( border )
	{
		wxBrush bgnd_brush( bgnd, wxSOLID );
		dc->SetPen( *wxBLACK_PEN );  // always black border on counter
		dc->SetBrush( bgnd_brush );
		dc->DrawRectangle( x, y, 28, 27 );
	}
	else
	{
		wxPen bgnd_pen( bgnd, 1, wxSOLID );
		// EJW (new): top 2/3 is white
		wxBrush bgnd_brushtop( bgndtop, wxSOLID );
		dc->SetPen( bgnd_pen );      // no border
		dc->SetBrush( bgnd_brushtop );
		dc->DrawRectangle( x + 1, y + 1, 26, 18 );
		// EJW: bottom 1/3 is background color
		wxBrush bgnd_brush( bgnd, wxSOLID );
		dc->SetPen( bgnd_pen );      // no border
		dc->SetBrush( bgnd_brush );
		dc->DrawRectangle( x + 1, y + 18, 26, 9 );
	}

	char str[10];

	// AA in similar way in both types
	// EJW: AA drawn first, same color as symbol
	dc->SetTextForeground( fgnd );
	sprintf( str, "%d", aa_ );
	drawStr( dc, x + 2, y + 2, str );
#if 0
	dc->SetTextForeground( *wxBLACK );
#endif
	// draw symbol
	// old style (separate capital ships)
	if ( type_ < NavalUnitType::FIRST_FLEET )
	{
		wxBitmap bmp( 20, 20 );

#if 0
		dc.SetBkMode( OPAQUE );
#endif
		wxMemoryDC mem2dc;
		mem2dc.SelectObject( bmp );  // mem2dc = counter's color (16 bit)
		mem2dc.SetBrush( wxBrush( fgnd, wxSOLID ) );
		mem2dc.SetPen( wxPen( fgnd, 1, wxSOLID ) );
		mem2dc.DrawRectangle( 0, 0, 20, 20 );
#if 0
		mem2dc.FillRect( 0, 0, 20, 20, TBrush( TColor( 0, 255, 0 ) ) );
#endif
		wxMemoryDC memdc;
		switch ( getShipType( ) )
		{
			case NavalUnitType::Ship::V:
			case NavalUnitType::Ship::VE:
			case NavalUnitType::Ship::VL:
			case NavalUnitType::Ship::VS:
				memdc.SelectObject( *hbmCarrier );
				break;
			case NavalUnitType::Ship::B:
			case NavalUnitType::Ship::BB:
			case NavalUnitType::Ship::BC:
			case NavalUnitType::Ship::BD:
			case NavalUnitType::Ship::BP:
				memdc.SelectObject( *hbmWarShip );
				break;
			case NavalUnitType::Ship::CA:
			case NavalUnitType::Ship::CC:
			case NavalUnitType::Ship::CD:
			case NavalUnitType::Ship::CL:
				memdc.SelectObject( *hbmCruiser );
				break;
			case NavalUnitType::Ship::DA:
			case NavalUnitType::Ship::DC:
			case NavalUnitType::Ship::DD:
			case NavalUnitType::Ship::DE:
			case NavalUnitType::Ship::DT:
				memdc.SelectObject( *hbmDestroyer );
				break;
			case NavalUnitType::Ship::SC:
			case NavalUnitType::Ship::SS:
			case NavalUnitType::Ship::SO:
				memdc.SelectObject( *hbmSubmarine );
				break;
			case NavalUnitType::Ship::LC:
				memdc.SelectObject( *hbmLC );
				break;
			case NavalUnitType::Ship::NT:
				memdc.SelectObject( *hbmCargoShip );
				break;
			default:
				memdc.SelectObject( *hbmAuxShip );
				break;
		}
		dc->Blit( x + 7, y + 6, 17, 10, &mem2dc, 0, 0, wxXOR );  // don't draw borders
		dc->Blit( x + 7, y + 6, 17, 10, &memdc, 0, 0, wxAND );
		dc->Blit( x + 7, y + 6, 17, 10, &mem2dc, 0, 0, wxXOR );

		dc->SetTextBackground( bgnd );
		dc->SetTextForeground( fgnd );
		dc->SetFont( fnt );

		// write str
		if ( getShipType( ) != NavalUnitType::Ship::NT && getShipType( ) != NavalUnitType::Ship::LC )
		{
			sprintf( str, "%d-%d-%d", pri_, sec_, ter_ );
			int szx = strLen( str );
			int x_pos = x + 14 - ( szx / 2 );
			drawStr( dc, x_pos, y + 17, str );
		}
	}
	// new style task forces
	else
	{
		// name
		dc->SetFont( fnt2 );

#if 0
		sprintf( str, "%s", FleetTypes[GetShipType( ) - NavalUnitType::FIRST_FLEET] );
#endif
		sprintf( str, "%s", name_ );
		wxString ws = wxS( str );

		int szx, szy;
		dc->GetTextExtent( ws, &szx, &szy );

		dc->SetTextForeground( fgnd );
		dc->SetTextBackground( bgnd );

		int x_pos = x + 14 - ( szx / 2 );  // width=28 -> 14 = halfway
		dc->DrawText( ws, x_pos, y + 9 );
		// EJW: switch to white for the type and strength on background color
		dc->SetTextForeground( *wxWHITE );
		// str
		if ( type_ == NavalUnitType::Fleet::TF )
			sprintf( str, "%d", getStrength( ) );
		else if ( type_ == NavalUnitType::Fleet::CG )
			sprintf( str, "(%d)", getStrength( ) );
		else if ( type_ == NavalUnitType::Fleet::SS )
			sprintf( str, "S%d", getStrength( ) );
		else if ( type_ == NavalUnitType::Fleet::RF )
			sprintf( str, "RF%d", getStrength( ) );
		else if ( type_ == NavalUnitType::Fleet::LC || type_ == NavalUnitType::Fleet::NTP )
			sprintf( str, "C%d", getStrength( ) );
		else // SOS type:
			sprintf( str, "%s%d", _fleet_type[type_ - NavalUnitType::FIRST_FLEET], getStrength( ) );

		szx = strLen( str );
		x_pos = x + 14 - ( szx / 2 );
		drawStr( dc, x_pos, y + 19, str );
	}
}