Removed the long time dead SCH_POLYLINE class (schematic level polyline)
This commit is contained in:
parent
86851d39a4
commit
c32f56ffaa
|
@ -132,7 +132,6 @@ set(EESCHEMA_SRCS
|
|||
sch_line.cpp
|
||||
sch_marker.cpp
|
||||
sch_no_connect.cpp
|
||||
sch_polyline.cpp
|
||||
sch_screen.cpp
|
||||
sch_sheet.cpp
|
||||
sch_sheet_path.cpp
|
||||
|
|
|
@ -41,7 +41,6 @@
|
|||
#include <sch_junction.h>
|
||||
#include <sch_line.h>
|
||||
#include <sch_no_connect.h>
|
||||
#include <sch_polyline.h>
|
||||
#include <sch_text.h>
|
||||
#include <sch_component.h>
|
||||
#include <sch_sheet.h>
|
||||
|
@ -346,33 +345,7 @@ void SCH_EDIT_FRAME::DeleteCurrentSegment( wxDC* DC )
|
|||
if( ( screen->GetCurItem() == NULL ) || !screen->GetCurItem()->IsNew() )
|
||||
return;
|
||||
|
||||
/* Cancel trace in progress */
|
||||
if( screen->GetCurItem()->Type() == SCH_POLYLINE_T )
|
||||
{
|
||||
SCH_POLYLINE* polyLine = (SCH_POLYLINE*) screen->GetCurItem();
|
||||
wxPoint endpos;
|
||||
|
||||
endpos = screen->GetCrossHairPosition();
|
||||
|
||||
int idx = polyLine->GetCornerCount() - 1;
|
||||
wxPoint pt = (*polyLine)[idx];
|
||||
|
||||
if( GetForceHVLines() )
|
||||
{
|
||||
/* Coerce the line to vertical or horizontal one: */
|
||||
if( std::abs( endpos.x - pt.x ) < std::abs( endpos.y - pt.y ) )
|
||||
endpos.x = pt.x;
|
||||
else
|
||||
endpos.y = pt.y;
|
||||
}
|
||||
|
||||
polyLine->SetPoint( idx, endpos );
|
||||
polyLine->Draw( m_canvas, DC, wxPoint( 0, 0 ), g_XorMode );
|
||||
}
|
||||
else
|
||||
{
|
||||
DrawSegment( m_canvas, DC, wxDefaultPosition, false );
|
||||
}
|
||||
|
||||
screen->Remove( screen->GetCurItem() );
|
||||
m_canvas->SetMouseCaptureCallback( NULL );
|
||||
|
|
|
@ -41,7 +41,6 @@
|
|||
#include <sch_line.h>
|
||||
#include <sch_no_connect.h>
|
||||
#include <sch_component.h>
|
||||
#include <sch_polyline.h>
|
||||
#include <sch_text.h>
|
||||
#include <sch_sheet.h>
|
||||
#include <sch_bitmap.h>
|
||||
|
@ -182,10 +181,6 @@ again." );
|
|||
item = new SCH_BUS_ENTRY();
|
||||
break;
|
||||
|
||||
case 'P': // Its a polyline item.
|
||||
item = new SCH_POLYLINE();
|
||||
break;
|
||||
|
||||
case 'C': // It is a connection item.
|
||||
item = new SCH_JUNCTION();
|
||||
break;
|
||||
|
|
|
@ -15,7 +15,6 @@
|
|||
#include <sch_marker.h>
|
||||
#include <sch_line.h>
|
||||
#include <sch_no_connect.h>
|
||||
#include <sch_polyline.h>
|
||||
#include <sch_sheet.h>
|
||||
#include <sch_component.h>
|
||||
#include <sch_junction.h>
|
||||
|
@ -25,7 +24,6 @@ void SetSchItemParent( SCH_ITEM* Struct, SCH_SCREEN* Screen )
|
|||
{
|
||||
switch( Struct->Type() )
|
||||
{
|
||||
case SCH_POLYLINE_T:
|
||||
case SCH_JUNCTION_T:
|
||||
case SCH_TEXT_T:
|
||||
case SCH_LABEL_T:
|
||||
|
@ -185,7 +183,6 @@ void DuplicateItemsInList( SCH_SCREEN* screen, PICKED_ITEMS_LIST& aItemsList,
|
|||
{
|
||||
switch( newitem->Type() )
|
||||
{
|
||||
case SCH_POLYLINE_T:
|
||||
case SCH_JUNCTION_T:
|
||||
case SCH_LINE_T:
|
||||
case SCH_BUS_ENTRY_T:
|
||||
|
|
|
@ -41,7 +41,6 @@ const KICAD_T SCH_COLLECTOR::AllItems[] = {
|
|||
SCH_NO_CONNECT_T,
|
||||
SCH_BUS_ENTRY_T,
|
||||
SCH_LINE_T,
|
||||
SCH_POLYLINE_T,
|
||||
SCH_BITMAP_T,
|
||||
SCH_TEXT_T,
|
||||
SCH_LABEL_T,
|
||||
|
@ -62,7 +61,6 @@ const KICAD_T SCH_COLLECTOR::AllItemsButPins[] = {
|
|||
SCH_NO_CONNECT_T,
|
||||
SCH_BUS_ENTRY_T,
|
||||
SCH_LINE_T,
|
||||
SCH_POLYLINE_T,
|
||||
SCH_BITMAP_T,
|
||||
SCH_TEXT_T,
|
||||
SCH_LABEL_T,
|
||||
|
@ -111,7 +109,6 @@ const KICAD_T SCH_COLLECTOR::MovableItems[] = {
|
|||
SCH_NO_CONNECT_T,
|
||||
SCH_BUS_ENTRY_T,
|
||||
// SCH_LINE_T,
|
||||
SCH_POLYLINE_T,
|
||||
SCH_BITMAP_T,
|
||||
SCH_TEXT_T,
|
||||
SCH_LABEL_T,
|
||||
|
@ -129,7 +126,6 @@ const KICAD_T SCH_COLLECTOR::DraggableItems[] = {
|
|||
SCH_JUNCTION_T,
|
||||
SCH_BUS_ENTRY_T,
|
||||
SCH_LINE_T,
|
||||
SCH_POLYLINE_T,
|
||||
SCH_LABEL_T,
|
||||
SCH_GLOBAL_LABEL_T,
|
||||
SCH_HIERARCHICAL_LABEL_T,
|
||||
|
@ -158,7 +154,6 @@ const KICAD_T SCH_COLLECTOR::ParentItems[] = {
|
|||
SCH_NO_CONNECT_T,
|
||||
SCH_BUS_ENTRY_T,
|
||||
SCH_LINE_T,
|
||||
SCH_POLYLINE_T,
|
||||
SCH_TEXT_T,
|
||||
SCH_LABEL_T,
|
||||
SCH_GLOBAL_LABEL_T,
|
||||
|
|
|
@ -1,295 +0,0 @@
|
|||
/*
|
||||
* This program source code file is part of KiCad, a free EDA CAD application.
|
||||
*
|
||||
* Copyright (C) 2004 Jean-Pierre Charras, jaen-pierre.charras@gipsa-lab.inpg.com
|
||||
* Copyright (C) 2004-2011 KiCad Developers, see change_log.txt for contributors.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
* as published by the Free Software Foundation; either version 2
|
||||
* of the License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, you may find one here:
|
||||
* http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
|
||||
* or you may search the http://www.gnu.org website for the version 2 license,
|
||||
* or you may write to the Free Software Foundation, Inc.,
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
|
||||
*/
|
||||
|
||||
/**
|
||||
* @file sch_polyline.cpp
|
||||
*/
|
||||
|
||||
#include <fctsys.h>
|
||||
#include <gr_basic.h>
|
||||
#include <macros.h>
|
||||
#include <class_drawpanel.h>
|
||||
#include <trigo.h>
|
||||
#include <common.h>
|
||||
#include <richio.h>
|
||||
|
||||
#include <general.h>
|
||||
#include <protos.h>
|
||||
#include <sch_polyline.h>
|
||||
|
||||
|
||||
SCH_POLYLINE::SCH_POLYLINE( int layer ) :
|
||||
SCH_ITEM( NULL, SCH_POLYLINE_T )
|
||||
{
|
||||
m_width = 0;
|
||||
|
||||
switch( layer )
|
||||
{
|
||||
default:
|
||||
m_Layer = LAYER_NOTES;
|
||||
break;
|
||||
|
||||
case LAYER_WIRE:
|
||||
case LAYER_NOTES:
|
||||
case LAYER_BUS:
|
||||
m_Layer = layer;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
SCH_POLYLINE::~SCH_POLYLINE()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
EDA_ITEM* SCH_POLYLINE::Clone() const
|
||||
{
|
||||
return new SCH_POLYLINE( *this );
|
||||
}
|
||||
|
||||
|
||||
bool SCH_POLYLINE::Save( FILE* aFile ) const
|
||||
{
|
||||
bool success = true;
|
||||
|
||||
const char* layer = "Notes";
|
||||
const char* width = "Line";
|
||||
|
||||
if( GetLayer() == LAYER_WIRE )
|
||||
layer = "Wire";
|
||||
|
||||
if( GetLayer() == LAYER_BUS )
|
||||
layer = "Bus";
|
||||
|
||||
if( fprintf( aFile, "Poly %s %s %d\n", width, layer, GetCornerCount() ) == EOF )
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
for( unsigned ii = 0; ii < GetCornerCount(); ii++ )
|
||||
{
|
||||
if( fprintf( aFile, "\t%-4d %-4d\n", m_points[ii ].x, m_points[ii].y ) == EOF )
|
||||
{
|
||||
success = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return success;
|
||||
}
|
||||
|
||||
|
||||
bool SCH_POLYLINE::Load( LINE_READER& aLine, wxString& aErrorMsg )
|
||||
{
|
||||
char Name1[256];
|
||||
char Name2[256];
|
||||
wxPoint pt;
|
||||
int ii;
|
||||
char* line = (char*) aLine;
|
||||
|
||||
while( (*line != ' ' ) && *line )
|
||||
line++;
|
||||
|
||||
if( sscanf( line, "%s %s %d", Name1, Name2, &ii ) != 3 )
|
||||
{
|
||||
aErrorMsg.Printf( wxT( "Eeschema file polyline struct error at line %d, aborted" ),
|
||||
aLine.LineNumber() );
|
||||
aErrorMsg << wxT( "\n" ) << FROM_UTF8( (char*) aLine );
|
||||
return false;
|
||||
}
|
||||
|
||||
m_Layer = LAYER_NOTES;
|
||||
|
||||
if( Name2[0] == 'W' )
|
||||
m_Layer = LAYER_WIRE;
|
||||
|
||||
if( Name2[0] == 'B' )
|
||||
m_Layer = LAYER_BUS;
|
||||
|
||||
for( unsigned jj = 0; jj < (unsigned)ii; jj++ )
|
||||
{
|
||||
wxPoint point;
|
||||
|
||||
if( !aLine.ReadLine() || sscanf( ((char*) aLine), "%d %d", &pt.x, &pt.y ) != 2 )
|
||||
{
|
||||
aErrorMsg.Printf( wxT( "Eeschema file polyline struct error at line %d, aborted" ),
|
||||
aLine.LineNumber() );
|
||||
aErrorMsg << wxT( "\n" ) << FROM_UTF8( (char*) aLine );
|
||||
return false;
|
||||
}
|
||||
|
||||
AddPoint( pt );
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
int SCH_POLYLINE::GetPenSize() const
|
||||
{
|
||||
int pensize = ( m_width == 0 ) ? GetDefaultLineThickness() : m_width;
|
||||
|
||||
return pensize;
|
||||
}
|
||||
|
||||
|
||||
void SCH_POLYLINE::Draw( EDA_DRAW_PANEL* aPanel, wxDC* aDC, const wxPoint& aOffset,
|
||||
GR_DRAWMODE aDrawMode, EDA_COLOR_T aColor )
|
||||
{
|
||||
EDA_COLOR_T color;
|
||||
int width = GetPenSize();
|
||||
|
||||
if( aColor >= 0 )
|
||||
color = aColor;
|
||||
else
|
||||
color = ReturnLayerColor( m_Layer );
|
||||
|
||||
GRSetDrawMode( aDC, aDrawMode );
|
||||
|
||||
if( m_Layer == LAYER_BUS )
|
||||
{
|
||||
width *= 3;
|
||||
}
|
||||
|
||||
GRMoveTo( m_points[0].x, m_points[0].y );
|
||||
|
||||
if( m_Layer == LAYER_NOTES )
|
||||
{
|
||||
for( unsigned i = 1; i < GetCornerCount(); i++ )
|
||||
GRDashedLineTo( aPanel->GetClipBox(), aDC, m_points[i].x + aOffset.x,
|
||||
m_points[i].y + aOffset.y, width, color );
|
||||
}
|
||||
else
|
||||
{
|
||||
for( unsigned i = 1; i < GetCornerCount(); i++ )
|
||||
GRLineTo( aPanel->GetClipBox(), aDC, m_points[i].x + aOffset.x,
|
||||
m_points[i].y + aOffset.y, width, color );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void SCH_POLYLINE::MirrorX( int aXaxis_position )
|
||||
{
|
||||
for( unsigned ii = 0; ii < GetCornerCount(); ii++ )
|
||||
{
|
||||
m_points[ii].y -= aXaxis_position;
|
||||
NEGATE( m_points[ii].y );
|
||||
m_points[ii].y = aXaxis_position;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void SCH_POLYLINE::MirrorY( int aYaxis_position )
|
||||
{
|
||||
for( unsigned ii = 0; ii < GetCornerCount(); ii++ )
|
||||
{
|
||||
m_points[ii].x -= aYaxis_position;
|
||||
NEGATE( m_points[ii].x );
|
||||
m_points[ii].x = aYaxis_position;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void SCH_POLYLINE::Rotate( wxPoint aPosition )
|
||||
{
|
||||
for( unsigned ii = 0; ii < GetCornerCount(); ii++ )
|
||||
{
|
||||
RotatePoint( &m_points[ii], aPosition, 900 );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
wxString SCH_POLYLINE::GetSelectMenuText() const
|
||||
{
|
||||
wxString menuText, fmt;
|
||||
|
||||
switch( m_Layer )
|
||||
{
|
||||
case LAYER_NOTES:
|
||||
fmt = _( "Graphic Polyline with %d Points" );
|
||||
break;
|
||||
|
||||
case LAYER_WIRE:
|
||||
fmt = _( "Polyline Wire with %d Points" );
|
||||
break;
|
||||
|
||||
case LAYER_BUS:
|
||||
fmt = _( "Polyline Bus with %d Points" );
|
||||
break;
|
||||
|
||||
default:
|
||||
fmt = _( "Polyline on Unkown Layer with %d Points" );
|
||||
}
|
||||
|
||||
menuText.Printf( fmt, m_points.size() );
|
||||
|
||||
return menuText;
|
||||
}
|
||||
|
||||
|
||||
BITMAP_DEF SCH_POLYLINE::GetMenuImage() const
|
||||
{
|
||||
if( m_Layer == LAYER_NOTES )
|
||||
return add_dashed_line_xpm;
|
||||
else if( m_Layer == LAYER_WIRE )
|
||||
return add_line_xpm;
|
||||
|
||||
return add_bus_xpm;
|
||||
}
|
||||
|
||||
|
||||
bool SCH_POLYLINE::HitTest( const wxPoint& aPosition, int aAccuracy ) const
|
||||
{
|
||||
for( size_t i = 0; i < m_points.size() - 1; i++ )
|
||||
{
|
||||
if( TestSegmentHit( aPosition, m_points[i], m_points[i + 1], aAccuracy ) )
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
bool SCH_POLYLINE::HitTest( const EDA_RECT& aRect, bool aContained, int aAccuracy ) const
|
||||
{
|
||||
EDA_RECT rect = aRect;
|
||||
|
||||
rect.Inflate( aAccuracy );
|
||||
|
||||
if( aContained )
|
||||
return rect.Contains( GetBoundingBox() );
|
||||
|
||||
return rect.Intersects( GetBoundingBox() );
|
||||
}
|
||||
|
||||
|
||||
void SCH_POLYLINE::SetPosition( const wxPoint& aPosition )
|
||||
{
|
||||
wxPoint offset = m_points[0] - aPosition;
|
||||
|
||||
for( size_t i = 0; i < m_points.size(); i++ )
|
||||
m_points[i] = m_points[i] - offset;
|
||||
}
|
||||
|
|
@ -1,144 +0,0 @@
|
|||
/*
|
||||
* This program source code file is part of KiCad, a free EDA CAD application.
|
||||
*
|
||||
* Copyright (C) 2004 Jean-Pierre Charras, jaen-pierre.charras@gipsa-lab.inpg.com
|
||||
* Copyright (C) 2004-2011 KiCad Developers, see change_log.txt for contributors.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
* as published by the Free Software Foundation; either version 2
|
||||
* of the License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, you may find one here:
|
||||
* http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
|
||||
* or you may search the http://www.gnu.org website for the version 2 license,
|
||||
* or you may write to the Free Software Foundation, Inc.,
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
|
||||
*/
|
||||
|
||||
/**
|
||||
* @file sch_polyline.h
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef _SCH_POLYLINE_H_
|
||||
#define _SCH_POLYLINE_H_
|
||||
|
||||
|
||||
#include <sch_item_struct.h>
|
||||
|
||||
|
||||
class SCH_POLYLINE : public SCH_ITEM
|
||||
{
|
||||
int m_width; // Thickness
|
||||
std::vector<wxPoint> m_points; // list of points (>= 2)
|
||||
|
||||
public:
|
||||
SCH_POLYLINE( int layer = LAYER_NOTES );
|
||||
|
||||
// Do not create a copy constructor. The one generated by the compiler is adequate.
|
||||
|
||||
~SCH_POLYLINE();
|
||||
|
||||
wxString GetClass() const
|
||||
{
|
||||
return wxT( "SCH_POLYLINE" );
|
||||
}
|
||||
|
||||
void Draw( EDA_DRAW_PANEL* aPanel, wxDC* aDC, const wxPoint& aOffset,
|
||||
GR_DRAWMODE aDrawMode, EDA_COLOR_T aColor = UNSPECIFIED_COLOR );
|
||||
|
||||
bool Save( FILE* aFile ) const;
|
||||
|
||||
bool Load( LINE_READER& aLine, wxString& aErrorMsg );
|
||||
|
||||
/**
|
||||
* Function AddPoint
|
||||
* add a corner to m_points
|
||||
*/
|
||||
void AddPoint( const wxPoint& point )
|
||||
{
|
||||
m_points.push_back( point );
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Function SetPoint
|
||||
* sets the point at \a aIndex in the list to \a aPoint.
|
||||
*
|
||||
* @param aIndex The index in the point list.
|
||||
* @param aPoint The new point value.
|
||||
*/
|
||||
void SetPoint( int aIndex, const wxPoint& aPoint )
|
||||
{
|
||||
// (unsigned) excludes aIndex<0 also
|
||||
wxCHECK_RET( (unsigned)aIndex < m_points.size(),
|
||||
wxT( "Invalid SCH_POLYLINE point list index." ) );
|
||||
|
||||
m_points[ aIndex ] = aPoint;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Function GetCornerCount
|
||||
* @return the number of corners
|
||||
*/
|
||||
unsigned GetCornerCount() const { return m_points.size(); }
|
||||
|
||||
int GetPenSize() const;
|
||||
|
||||
void Move( const wxPoint& aMoveVector )
|
||||
{
|
||||
for( unsigned ii = 0; ii < GetCornerCount(); ii++ )
|
||||
m_points[ii] += aMoveVector;
|
||||
}
|
||||
|
||||
void MirrorY( int aYaxis_position );
|
||||
|
||||
void MirrorX( int aXaxis_position );
|
||||
|
||||
void Rotate( wxPoint aPosition );
|
||||
|
||||
wxString GetSelectMenuText() const;
|
||||
|
||||
BITMAP_DEF GetMenuImage() const;
|
||||
|
||||
/**
|
||||
* Function operator[]
|
||||
* is used for read only access and returns the point at \a aIndex.
|
||||
* @param aIndex The index of the list of points to return.
|
||||
* @return A wxPoint object containing the point at \a aIndex.
|
||||
*/
|
||||
wxPoint operator[]( int aIndex ) const
|
||||
{
|
||||
// (unsigned) excludes aIndex<0 also
|
||||
wxCHECK_MSG( (unsigned)aIndex < m_points.size(), wxDefaultPosition,
|
||||
wxT( "Invalid SCH_POLYLINE point list index." ) );
|
||||
|
||||
return m_points[ aIndex ];
|
||||
}
|
||||
|
||||
wxPoint GetPosition() const { return m_points[0]; }
|
||||
|
||||
void SetPosition( const wxPoint& aPosition );
|
||||
|
||||
bool HitTest( const wxPoint& aPosition, int aAccuracy ) const;
|
||||
|
||||
bool HitTest( const EDA_RECT& aRect, bool aContained = false,
|
||||
int aAccuracy = 0 ) const;
|
||||
|
||||
EDA_ITEM* Clone() const;
|
||||
|
||||
#if defined(DEBUG)
|
||||
void Show( int nestLevel, std::ostream& os ) const { ShowDummy( os ); } // override
|
||||
#endif
|
||||
};
|
||||
|
||||
|
||||
#endif // _SCH_POLYLINE_H_
|
|
@ -39,7 +39,6 @@
|
|||
#include <sch_line.h>
|
||||
#include <sch_no_connect.h>
|
||||
#include <sch_component.h>
|
||||
#include <sch_polyline.h>
|
||||
#include <sch_sheet.h>
|
||||
#include <sch_bitmap.h>
|
||||
|
||||
|
|
|
@ -84,7 +84,6 @@ enum KICAD_T {
|
|||
SCH_NO_CONNECT_T,
|
||||
SCH_BUS_ENTRY_T,
|
||||
SCH_LINE_T,
|
||||
SCH_POLYLINE_T,
|
||||
SCH_BITMAP_T,
|
||||
SCH_TEXT_T,
|
||||
SCH_LABEL_T,
|
||||
|
|
|
@ -7,8 +7,7 @@
|
|||
#define _COLORS_DESIGN_SETTING_H
|
||||
#include <layers_id_colors_and_visibility.h>
|
||||
|
||||
// XXX shouldn't these come from somewhere else?
|
||||
#define LAYERSCOLORSBUFFERSIZE 32
|
||||
#define LAYERSCOLORSBUFFERSIZE NB_LAYERS
|
||||
#define ITEMSCOLORSBUFFERSIZE 32
|
||||
|
||||
/**
|
||||
|
|
Loading…
Reference in New Issue