Detect if HiDPI cursors are needed

HiDPI cursors are twice as large as regular cursors, allowing them to be
more easily seen on a HiDPI system

Fixes https://gitlab.com/kicad/code/kicad/-/issues/16231
This commit is contained in:
Seth Hillbrand 2024-02-20 16:14:02 -08:00
parent b2e0c2606f
commit ab0426d620
44 changed files with 1318 additions and 367 deletions

View File

@ -657,8 +657,12 @@ void EDA_DRAW_PANEL_GAL::onShowTimer( wxTimerEvent& aEvent )
void EDA_DRAW_PANEL_GAL::SetCurrentCursor( KICURSOR aCursor ) void EDA_DRAW_PANEL_GAL::SetCurrentCursor( KICURSOR aCursor )
{ {
if( m_gal ) if( !m_gal )
m_gal->SetNativeCursorStyle( aCursor ); return;
DPI_SCALING_COMMON dpi( nullptr, m_parent );
m_gal->SetNativeCursorStyle( aCursor, dpi.GetContentScaleFactor() >= 2.0 );
} }

View File

@ -1672,13 +1672,16 @@ bool CAIRO_GAL::updatedGalDisplayOptions( const GAL_DISPLAY_OPTIONS& aOptions )
} }
bool CAIRO_GAL::SetNativeCursorStyle( KICURSOR aCursor ) bool CAIRO_GAL::SetNativeCursorStyle( KICURSOR aCursor, bool aHiDPI )
{ {
// Store the current cursor type and get the wxCursor for it // Store the current cursor type and get the wxCursor for it
if( !GAL::SetNativeCursorStyle( aCursor ) ) if( !GAL::SetNativeCursorStyle( aCursor, aHiDPI ) )
return false; return false;
m_currentwxCursor = CURSOR_STORE::GetCursor( m_currentNativeCursor ); if( aHiDPI )
m_currentwxCursor = CURSOR_STORE::GetHiDPICursor( m_currentNativeCursor );
else
m_currentwxCursor = CURSOR_STORE::GetCursor( m_currentNativeCursor );
// Update the cursor in the wx control // Update the cursor in the wx control
wxWindow::SetCursor( m_currentwxCursor ); wxWindow::SetCursor( m_currentwxCursor );

View File

@ -44,85 +44,76 @@
#include <cursors/cursor-subtract.xpm> #include <cursors/cursor-subtract.xpm>
#include <cursors/cursor-text.xpm> #include <cursors/cursor-text.xpm>
#include <cursors/cursor-xor.xpm> #include <cursors/cursor-xor.xpm>
#include <cursors/cursor-zoom.xpm> #include <cursors/cursor-zoom-in.xpm>
#include <cursors/cursor-zoom-out.xpm> #include <cursors/cursor-zoom-out.xpm>
#include <cursors/cursor_tune.xpm>
#include <cursors/voltage_probe.xpm>
#include <cursors/current_probe.xpm>
// HiDPI cursor files
#include <cursors/cursor-add64.xpm>
#include <cursors/cursor-component64.xpm>
#include <cursors/cursor-eraser64.xpm>
#include <cursors/cursor-label-global64.xpm>
#include <cursors/cursor-label-hier64.xpm>
#include <cursors/cursor-label-net64.xpm>
#include <cursors/cursor-line-bus64.xpm>
#include <cursors/cursor-line-graphic64.xpm>
#include <cursors/cursor-line-wire64.xpm>
#include <cursors/cursor-line-wire-add64.xpm>
#include <cursors/cursor-measure64.xpm>
#include <cursors/cursor-pencil64.xpm>
#include <cursors/cursor-select-lasso64.xpm>
#include <cursors/cursor-select-window64.xpm>
#include <cursors/cursor-subtract64.xpm>
#include <cursors/cursor-text64.xpm>
#include <cursors/cursor-xor64.xpm>
#include <cursors/cursor-zoom-in64.xpm>
#include <cursors/cursor-zoom-out64.xpm>
#include <cursors/cursor_tune64.xpm>
#include <cursors/voltage_probe64.xpm>
#include <cursors/current_probe64.xpm>
// Under MSW, the standard cursor is white on black. Elsewhere it is black on white // Under MSW, the standard cursor is white on black. Elsewhere it is black on white
#ifdef __WINDOWS__ #ifdef __WINDOWS__
#include <cursors/cursor-place.xpm> #include <cursors/cursor-place.xpm>
#include <cursors/cursor-place64.xpm>
#include <cursors/cursor-select-m.xpm> #include <cursors/cursor-select-m.xpm>
#include <cursors/cursor-select-m64.xpm>
#else #else
#include <cursors/cursor-place-black.xpm> #include <cursors/cursor-place-black.xpm>
#include <cursors/cursor-place-black64.xpm>
#include <cursors/cursor-select-m-black.xpm> #include <cursors/cursor-select-m-black.xpm>
#include <cursors/cursor-select-m-black64.xpm>
#endif #endif
#include <wx/bitmap.h> #include <wx/bitmap.h>
#include <wx/debug.h> #include <wx/debug.h>
static const unsigned char voltage_probe[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x03, 0x00,
0x00, 0x30, 0x06, 0x00, 0x00, 0x18, 0x0c, 0x00, 0x00, 0x0e, 0x08, 0x00, 0x80, 0x07, 0x08, 0x00,
0xc0, 0x07, 0x18, 0x00, 0xe0, 0x07, 0x30, 0x00, 0xf0, 0x03, 0x60, 0x00, 0xf8, 0x01, 0x00, 0x00,
0xfc, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x80, 0x1f, 0x00, 0x00, 0xc0,
0x0f, 0x00, 0x00, 0xe0, 0x07, 0x00, 0x00, 0xf0, 0x03, 0x00, 0x00, 0xf0, 0x01, 0x00, 0x00, 0xf0,
0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x02,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
static const unsigned char current_probe[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0x60, 0x06, 0x00,
0x00, 0x30, 0x0c, 0x00, 0x00, 0x1c, 0x08, 0x00, 0x00, 0x0f, 0x08, 0x00, 0x80, 0x0f, 0x18, 0x00,
0xc0, 0x0f, 0x30, 0x80, 0xe1, 0x07, 0x60, 0x80, 0xf1, 0x03, 0x00, 0x80, 0xf9, 0x01, 0x00, 0x80,
0xfd, 0x00, 0x00, 0x80, 0x7f, 0x00, 0x00, 0x80, 0x3f, 0x00, 0x00, 0x80, 0x1f, 0x00, 0x00, 0xc0,
0x0f, 0x00, 0x00, 0xf8, 0x07, 0x00, 0x00, 0xfe, 0x03, 0x00, 0x00, 0xc6, 0x01, 0x00, 0x00, 0x83,
0x01, 0x00, 0x00, 0x83, 0x01, 0x00, 0x00, 0x83, 0x01, 0x00, 0x00, 0xc2, 0x00, 0x00, 0x00, 0xfc,
0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00 };
static const unsigned char cursor_tune[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x80, 0x07, 0x00, 0x00, 0xc0, 0x0f, 0x00,
0x00, 0xe0, 0x1f, 0x00, 0x00, 0xf0, 0x1f, 0x00, 0x00, 0xf8, 0x0f, 0x00, 0x00, 0xfc, 0x07, 0x00,
0x00, 0xfe, 0x03, 0x00, 0x00, 0xff, 0x01, 0x00, 0x80, 0xff, 0x00, 0x00, 0xc0, 0x7f, 0x00, 0x00,
0xe0, 0x3f, 0x00, 0x00, 0xe0, 0x1f, 0x00, 0x00, 0xfc, 0x0f, 0x00, 0x00, 0xfc, 0x07, 0x00, 0x00,
0xfc, 0x03, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0xf4, 0x00, 0x00, 0x00, 0xea, 0x00, 0x00, 0x00,
0x05, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, 0x50,
0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x0a,
0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00 };
static const unsigned char cursor_tune_mask[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x80, 0x07, 0x00, 0x00, 0xc0, 0x0f,
0x00, 0x00, 0xe0, 0x1f, 0x00, 0x00, 0xf0, 0x1f, 0x00, 0x00, 0xf8, 0x0f, 0x00, 0x00, 0xfc, 0x07,
0x00, 0x00, 0xfe, 0x03, 0x00, 0x00, 0xff, 0x01, 0x00, 0x80, 0xff, 0x00, 0x00, 0xc0, 0x7f, 0x00,
0x00, 0xe0, 0x3f, 0x00, 0x00, 0xe0, 0x1f, 0x00, 0x00, 0xfc, 0x0f, 0x00, 0x00, 0xfc, 0x07, 0x00,
0x00, 0xfc, 0x03, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0xee, 0x00, 0x00,
0x00, 0x07, 0x00, 0x00, 0x80, 0x03, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00,
0x70, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00,
0x0e, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00 };
static const std::vector<CURSOR_STORE::CURSOR_DEF> standard_cursors = { static const std::vector<CURSOR_STORE::CURSOR_DEF> standard_cursors = {
{ {
KICURSOR::VOLTAGE_PROBE, KICURSOR::VOLTAGE_PROBE,
voltage_probe,
voltage_probe,
nullptr, nullptr,
nullptr,
voltage_probe_xpm,
{ 32, 32 }, { 32, 32 },
{ 1, 31 }, { 1, 31 },
}, },
{ {
KICURSOR::CURRENT_PROBE, KICURSOR::CURRENT_PROBE,
current_probe,
current_probe,
nullptr, nullptr,
nullptr,
current_probe_xpm,
{ 32, 32 }, { 32, 32 },
{ 4, 27 }, { 4, 27 },
}, },
{ {
KICURSOR::TUNE, KICURSOR::TUNE,
cursor_tune,
cursor_tune_mask,
nullptr, nullptr,
nullptr,
cursor_tune_xpm,
{ 32, 32 }, { 32, 32 },
{ 1, 30 }, { 1, 30 },
}, },
@ -198,7 +189,7 @@ static const std::vector<CURSOR_STORE::CURSOR_DEF> standard_cursors = {
KICURSOR::ZOOM_IN, KICURSOR::ZOOM_IN,
nullptr, nullptr,
nullptr, nullptr,
cursor_zoom_xpm, cursor_zoom_in_xpm,
{ 32, 32 }, { 32, 32 },
{ 6, 6 }, { 6, 6 },
}, },
@ -305,6 +296,209 @@ static const std::vector<CURSOR_STORE::CURSOR_DEF> standard_cursors = {
}; };
static const std::vector<CURSOR_STORE::CURSOR_DEF> hidpi_cursors = {
{
KICURSOR::VOLTAGE_PROBE,
nullptr,
nullptr,
voltage_probe64_xpm,
{ 64, 64 },
{ 1, 62 },
},
{
KICURSOR::CURRENT_PROBE,
nullptr,
nullptr,
current_probe64_xpm,
{ 64, 64 },
{ 8, 54 },
},
{
KICURSOR::TUNE,
nullptr,
nullptr,
cursor_tune64_xpm,
{ 64, 64 },
{ 2, 60 },
},
{
KICURSOR::PENCIL,
nullptr,
nullptr,
cursor_pencil64_xpm,
{ 64, 64 },
{ 8, 54 },
},
{
KICURSOR::MOVING,
nullptr,
nullptr,
#ifdef __WINDOWS__
cursor_select_m64_xpm,
#else
cursor_select_m_black64_xpm,
#endif
{ 64, 64 },
{ 2, 2 },
},
{
KICURSOR::REMOVE,
nullptr,
nullptr,
cursor_eraser64_xpm,
{ 64, 64 },
{ 8, 8 },
},
{
KICURSOR::TEXT,
nullptr,
nullptr,
cursor_text64_xpm,
{ 64, 64 },
{ 14, 14 },
},
{
KICURSOR::MEASURE,
nullptr,
nullptr,
cursor_measure64_xpm,
{ 64, 64 },
{ 8, 8 },
},
{
KICURSOR::ADD,
nullptr,
nullptr,
cursor_add64_xpm,
{ 64, 64 },
{ 14, 14 },
},
{
KICURSOR::SUBTRACT,
nullptr,
nullptr,
cursor_subtract64_xpm,
{ 64, 64 },
{ 14, 14 },
},
{
KICURSOR::XOR,
nullptr,
nullptr,
cursor_xor64_xpm,
{ 64, 64 },
{ 14, 14 },
},
{
KICURSOR::ZOOM_IN,
nullptr,
nullptr,
cursor_zoom_in64_xpm,
{ 64, 64 },
{ 12, 12 },
},
{
KICURSOR::ZOOM_OUT,
nullptr,
nullptr,
cursor_zoom_out64_xpm,
{ 64, 64 },
{ 12, 12 },
},
{
KICURSOR::LABEL_NET,
nullptr,
nullptr,
cursor_label_net64_xpm,
{ 64, 64 },
{ 14, 14 },
},
{
KICURSOR::LABEL_GLOBAL,
nullptr,
nullptr,
cursor_label_global64_xpm,
{ 64, 64 },
{ 14, 14 },
},
{
KICURSOR::COMPONENT,
nullptr,
nullptr,
cursor_component64_xpm,
{ 64, 64 },
{ 14, 14 },
},
{
KICURSOR::SELECT_LASSO,
nullptr,
nullptr,
cursor_select_lasso64_xpm,
{ 64, 64 },
{ 14, 14 },
},
{
KICURSOR::SELECT_WINDOW,
nullptr,
nullptr,
cursor_select_window64_xpm,
{ 64, 64 },
{ 14, 20 },
},
{
KICURSOR::LINE_BUS,
nullptr,
nullptr,
cursor_line_bus64_xpm,
{ 64, 64 },
{ 10, 52 },
},
{
KICURSOR::LINE_WIRE,
nullptr,
nullptr,
cursor_line_wire64_xpm,
{ 64, 64 },
{ 10, 52 },
},
{
KICURSOR::LINE_WIRE_ADD,
nullptr,
nullptr,
cursor_line_wire_add64_xpm,
{ 64, 64 },
{ 10, 52 },
},
{
KICURSOR::LINE_GRAPHIC,
nullptr,
nullptr,
cursor_line_graphic64_xpm,
{ 64, 64 },
{ 10, 52 },
},
{
KICURSOR::LABEL_HIER,
nullptr,
nullptr,
cursor_label_hier64_xpm,
{ 64, 64 },
{ 14, 14 },
},
{
KICURSOR::PLACE,
nullptr,
nullptr,
#ifdef __WINDOWS__
cursor_place64_xpm,
#else
cursor_place_black64_xpm,
#endif
{ 64, 64 },
{ 2, 2 },
},
};
/** /**
* Construct a cursor for the given definition. * Construct a cursor for the given definition.
* *
@ -393,8 +587,8 @@ const wxCursor& CURSOR_STORE::Get( KICURSOR aIdKey ) const
const wxCursor CURSOR_STORE::GetCursor( KICURSOR aCursorType ) const wxCursor CURSOR_STORE::GetCursor( KICURSOR aCursorType )
{ {
wxStockCursor stock = wxStockCursor stock = GetStockCursor( aCursorType );
GetStockCursor( aCursorType );
if( stock != wxCURSOR_MAX ) if( stock != wxCURSOR_MAX )
{ {
return wxCursor( stock ); return wxCursor( stock );
@ -405,6 +599,20 @@ const wxCursor CURSOR_STORE::GetCursor( KICURSOR aCursorType )
} }
const wxCursor CURSOR_STORE::GetHiDPICursor( KICURSOR aCursorType )
{
wxStockCursor stock = GetStockCursor( aCursorType );
if( stock != wxCURSOR_MAX )
{
return wxCursor( stock );
}
static CURSOR_STORE store( hidpi_cursors );
return store.Get( aCursorType );
}
wxStockCursor CURSOR_STORE::GetStockCursor( KICURSOR aCursorType ) wxStockCursor CURSOR_STORE::GetStockCursor( KICURSOR aCursorType )
{ {
wxStockCursor stockCursor; wxStockCursor stockCursor;

View File

@ -81,7 +81,7 @@ GAL::GAL( GAL_DISPLAY_OPTIONS& aDisplayOptions ) :
SetCursorEnabled( false ); SetCursorEnabled( false );
// Initialize the native widget to an arrow cursor // Initialize the native widget to an arrow cursor
SetNativeCursorStyle( KICURSOR::ARROW ); SetNativeCursorStyle( KICURSOR::ARROW, false );
// Initialize text properties // Initialize text properties
ResetTextAttributes(); ResetTextAttributes();
@ -277,7 +277,7 @@ void GAL::BitmapText( const wxString& aText, const VECTOR2I& aPosition, const ED
} }
bool GAL::SetNativeCursorStyle( KICURSOR aCursor ) bool GAL::SetNativeCursorStyle( KICURSOR aCursor, bool aHiDPI )
{ {
if( m_currentNativeCursor == aCursor ) if( m_currentNativeCursor == aCursor )
return false; return false;

View File

@ -2150,13 +2150,16 @@ void OPENGL_GAL::EndDiffLayer()
} }
bool OPENGL_GAL::SetNativeCursorStyle( KICURSOR aCursor ) bool OPENGL_GAL::SetNativeCursorStyle( KICURSOR aCursor, bool aHiDPI )
{ {
// Store the current cursor type and get the wxCursor for it // Store the current cursor type and get the wxCursor for it
if( !GAL::SetNativeCursorStyle( aCursor ) ) if( !GAL::SetNativeCursorStyle( aCursor, aHiDPI ) )
return false; return false;
m_currentwxCursor = CURSOR_STORE::GetCursor( m_currentNativeCursor ); if( aHiDPI )
m_currentwxCursor = CURSOR_STORE::GetHiDPICursor( m_currentNativeCursor );
else
m_currentwxCursor = CURSOR_STORE::GetCursor( m_currentNativeCursor );
// Update the cursor in the wx control // Update the cursor in the wx control
HIDPI_GL_CANVAS::SetCursor( m_currentwxCursor ); HIDPI_GL_CANVAS::SetCursor( m_currentwxCursor );

View File

@ -444,7 +444,7 @@ public:
} }
/// @copydoc GAL::SetNativeCursorStyle() /// @copydoc GAL::SetNativeCursorStyle()
bool SetNativeCursorStyle( KICURSOR aCursor ) override; bool SetNativeCursorStyle( KICURSOR aCursor, bool aHiDPI ) override;
/// @copydoc GAL::BeginDrawing() /// @copydoc GAL::BeginDrawing()
void BeginDrawing() override; void BeginDrawing() override;

View File

@ -34,32 +34,59 @@ enum class KICURSOR
{ {
DEFAULT, DEFAULT,
ARROW, ARROW,
ARROW64,
MOVING, MOVING,
MOVING64,
PENCIL, PENCIL,
PENCIL64,
REMOVE, REMOVE,
REMOVE64,
HAND, HAND,
HAND64,
BULLSEYE, BULLSEYE,
BULLSEYE64,
VOLTAGE_PROBE, VOLTAGE_PROBE,
VOLTAGE_PROBE64,
CURRENT_PROBE, CURRENT_PROBE,
CURRENT_PROBE64,
TUNE, TUNE,
TUNE64,
TEXT, TEXT,
TEXT64,
MEASURE, MEASURE,
MEASURE64,
ADD, ADD,
ADD64,
SUBTRACT, SUBTRACT,
SUBTRACT64,
XOR, XOR,
XOR64,
ZOOM_IN, ZOOM_IN,
ZOOM_IN64,
ZOOM_OUT, ZOOM_OUT,
ZOOM_OUT64,
LABEL_NET, LABEL_NET,
LABEL_NET64,
LABEL_GLOBAL, LABEL_GLOBAL,
LABEL_GLOBAL64,
COMPONENT, COMPONENT,
COMPONENT64,
SELECT_WINDOW, SELECT_WINDOW,
SELECT_WINDOW64,
SELECT_LASSO, SELECT_LASSO,
SELECT_LASSO64,
LINE_BUS, LINE_BUS,
LINE_BUS64,
LINE_GRAPHIC, LINE_GRAPHIC,
LINE_GRAPHIC64,
LINE_WIRE, LINE_WIRE,
LINE_WIRE64,
LINE_WIRE_ADD, LINE_WIRE_ADD,
LINE_WIRE_ADD64,
LABEL_HIER, LABEL_HIER,
PLACE LABEL_HIER64,
PLACE,
PLACE64
}; };
/** /**
@ -113,6 +140,8 @@ public:
static const wxCursor GetCursor( KICURSOR aCursorType ); static const wxCursor GetCursor( KICURSOR aCursorType );
static const wxCursor GetHiDPICursor( KICURSOR aCursorType );
static wxStockCursor GetStockCursor( KICURSOR aCursorType ); static wxStockCursor GetStockCursor( KICURSOR aCursorType );
private: private:

View File

@ -886,7 +886,7 @@ public:
* @param aCursor is the cursor to use in the native panel * @param aCursor is the cursor to use in the native panel
* @return true if the cursor was updated, false if the cursor given was already set * @return true if the cursor was updated, false if the cursor given was already set
*/ */
virtual bool SetNativeCursorStyle( KICURSOR aCursor ); virtual bool SetNativeCursorStyle( KICURSOR aCursor, bool aHiDPI );
/** /**
* Enable/disable cursor. * Enable/disable cursor.

View File

@ -276,7 +276,7 @@ public:
// ------- // -------
/// @copydoc GAL::SetNativeCursorStyle() /// @copydoc GAL::SetNativeCursorStyle()
bool SetNativeCursorStyle( KICURSOR aCursor ) override; bool SetNativeCursorStyle( KICURSOR aCursor, bool aHiDPI ) override;
/// @copydoc GAL::DrawCursor() /// @copydoc GAL::DrawCursor()
void DrawCursor( const VECTOR2D& aCursorPosition ) override; void DrawCursor( const VECTOR2D& aCursorPosition ) override;

View File

@ -0,0 +1,37 @@
/* XPM */
static char const* current_probe_xpm[] = {
"32 32 2 1",
" c None",
". c #000000",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" .... ",
" .. .. ",
" .. .. ",
" ... . ",
" .... . ",
" ..... .. ",
" ...... .. ",
" .. ...... .. ",
" .. ...... ",
" .. ...... ",
" .. ...... ",
" ........ ",
" ....... ",
" ...... ",
" ...... ",
" ........ ",
" ......... ",
" .. ... ",
".. .. ",
".. .. ",
".. .. ",
" . .. ",
" ...... ",
" ... "};

View File

@ -0,0 +1,70 @@
/* XPM */
static char const * current_probe64_xpm[] = {
"64 64 3 1",
" c None",
". c #FFFFFF",
"+ c #000000",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ...... ",
" .++++++. ",
" .++++++++. ",
" .+++....+++. ",
" .+++. .+++. ",
" .+++. .+++. ",
" ...+++. .+++. ",
" .+++++. .++. ",
" ...+++++. .++. ",
" .+++++++. .++. ",
" .++++++++. .++. ",
" .+++++++++. .+++. ",
" .++++++++++. .+++. ",
" .+++++++++++. .+++. ",
" .... .+++++++++++. .+++. ",
" .++++. .+++++++++++. .+++. ",
" .++++. .+++++++++++. .+++. ",
" .++++. .+++++++++++. ... ",
" .++++. .+++++++++++. ",
" .++++. .+++++++++++. ",
" .++++. .+++++++++++. ",
" .++++. .+++++++++++. ",
" .++++..+++++++++++. ",
" .++++.+++++++++++. ",
" .+++++++++++++++. ",
" .++++++++++++++. ",
" .+++++++++++++. ",
" .++++++++++++. ",
" ..+++++++++++. ",
" .++++++++++++. ",
" .....+++++++++++. ",
" .+++++++++++++++. ",
" ...+++++++++++++++. ",
" .+++++++++++++++++. ",
" .+++++++++++++++++. ",
" .++++......++++++. ",
" .+++. .+++++. ",
".+++. .++++. ",
".+++. .++++. ",
".+++. .++++. ",
".+++. .++++. ",
".+++. .++++. ",
".+++. .+++. ",
" .++. .+++. ",
" .+. .......++++. ",
" . .+++++++++++. ",
" .+++++++++++. ",
" ..++++++... ",
" ...... "};

View File

@ -1,5 +1,5 @@
/* XPM */ /* XPM */
static char * cursor_add64_xpm[] = { static char const * cursor_add64_xpm[] = {
"64 64 3 1", "64 64 3 1",
" c None", " c None",
". c #000000", ". c #000000",

View File

@ -1,5 +1,5 @@
/* XPM */ /* XPM */
static char * cursor_component64_xpm[] = { static char const * cursor_component64_xpm[] = {
"64 64 3 1", "64 64 3 1",
" c None", " c None",
". c #000000", ". c #000000",

View File

@ -1,5 +1,5 @@
/* XPM */ /* XPM */
static char * cursor_eraser64_xpm[] = { static char const * cursor_eraser64_xpm[] = {
"64 64 3 1", "64 64 3 1",
" c None", " c None",
". c #000000", ". c #000000",

View File

@ -1,70 +1,197 @@
/* XPM */ /* XPM */
static char * cursor_label_global64_xpm[] = { static char const * cursor_label_global64_xpm[] = {
"64 64 3 1", "64 64 130 2",
" c None", " c None",
". c #000000", ". c #FFFFFF",
"+ c #FFFFFF", "+ c #000000",
" ", "@ c #E6E6E6",
" ++ ", "# c #E5E5E5",
" +..+ ", "$ c #E4E4E4",
" +..+ ", "% c #686868",
" +..+ ", "& c #1E1E1E",
" +..+ ", "* c #818181",
" +..+ ", "= c #DFDFDF",
" +..+ ", "- c #212121",
" +..+ ", "; c #717171",
" +..+ ", "> c #EEEEEE",
" +..+ ", ", c #ABABAB",
" +..+ ", "' c #141414",
" +..+ ", ") c #565656",
" ++++++++++++..++++++++++++ ", "! c #B6B6B6",
" +............ ............+ ", "~ c #636363",
" +............ ............+ ", "{ c #070707",
" ++++++++++++..++++++++++++ ", "] c #181818",
" +..+ ", "^ c #0D0D0D",
" +..+ ", "/ c #303030",
" +..+ ", "( c #696969",
" +..+ ", "_ c #D3D3D3",
" +..+ ", ": c #353535",
" +..+ ", "< c #707070",
" +..+ ", "[ c #4C4C4C",
" +..+ ", "} c #757575",
" +..+ ", "| c #AEAEAE",
" +..+ ", "1 c #2A2A2A",
" +..+ ", "2 c #AAAAAA",
" ++ ++++++++++++++++++++++++++++ ", "3 c #797979",
" +............................+ ", "4 c #020202",
" +.............................+ ", "5 c #676767",
" +..+++++++++++++++++++++++++...+ ", "6 c #646464",
" +..+ ++++++++ +...+ ", "7 c #131313",
" +..+ +......+ +...+ ", "8 c #4D4D4D",
" +..+ +......+ +...+ ", "9 c #CBCBCB",
" +..+ +.......++ +...+ ", "0 c #A1A1A1",
" +..+ +........+ +...+ ", "a c #2F2F2F",
" +..+ +.........++ +...+ ", "b c #373737",
" +..+ +..........+ +...+ ", "c c #505050",
" +..+ +..........+ +...+ ", "d c #010101",
" +..+ +............+ +...+ ", "e c #6D6D6D",
" +..+ +.....++.....+ +...+ ", "f c #D5D5D5",
" +..+ +....+ +....++ +...+ ", "g c #B8B8B8",
" +..+ +.....+ +.....+ +...+ ", "h c #424242",
" +..+ +....+ +....+ +...+ ", "i c #959595",
" +..+ +.....+ +.....+ +...+", "j c #AFAFAF",
" +..+ +......++++......+ +...+", "k c #3C3C3C",
" +..+ +................+ +...+ ", "l c #919191",
" +..+ ++................++ +...+ ", "m c #D8D8D8",
" +..+ +..................+ +...+ ", "n c #575757",
" +..+ +....................+ +...+ ", "o c #747474",
" +..+ +......++++++++......+ +...+ ", "p c #1F1F1F",
" +..+ ++.....++ ++.....++ +...+ ", "q c #F1F1F1",
" +..+ +.....++ ++.....+ +...+ ", "r c #090909",
" +..+++.....+ +.....++ +...+ ", "s c #3E3E3E",
" +..++......+ +......+ +...+ ", "t c #999999",
" +..++......+ +......+ +...+ ", "u c #E3E3E3",
" +..+ ++++++ ++++++ +...+ ", "v c #4A4A4A",
" +..+ +...+ ", "w c #C2C2C2",
" +..+ +...+ ", "x c #858585",
" +..+++++++++++++++++++++++++...+ ", "y c #282828",
" +.............................+ ", "z c #A9A9A9",
" +............................+ ", "A c #ADADAD",
" +++++++++++++++++++++++++++++ "}; "B c #4E4E4E",
"C c #727272",
"D c #D6D6D6",
"E c #B0B0B0",
"F c #3D3D3D",
"G c #808080",
"H c #8F8F8F",
"I c #242424",
"J c #8D8D8D",
"K c #EAEAEA",
"L c #FEFEFE",
"M c #FDFDFD",
"N c #DBDBDB",
"O c #7E7E7E",
"P c #868686",
"Q c #8E8E8E",
"R c #898989",
"S c #7B7B7B",
"T c #272727",
"U c #5E5E5E",
"V c #232323",
"W c #3B3B3B",
"X c #DADADA",
"Y c #E1E1E1",
"Z c #909090",
"` c #BFBFBF",
" . c #BCBCBC",
".. c #6B6B6B",
"+. c #474747",
"@. c #7C7C7C",
"#. c #7A7A7A",
"$. c #767676",
"%. c #737373",
"&. c #202020",
"*. c #191919",
"=. c #A2A2A2",
"-. c #FCFCFC",
";. c #030303",
">. c #484848",
",. c #EBEBEB",
"'. c #9F9F9F",
"). c #4F4F4F",
"!. c #C6C6C6",
"~. c #FBFBFB",
"{. c #B1B1B1",
"]. c #121212",
"^. c #C9C9C9",
"/. c #E0E0E0",
"(. c #DCDCDC",
"_. c #1C1C1C",
":. c #989898",
"<. c #F6F6F6",
"[. c #CACACA",
"}. c #787878",
"|. c #F4F4F4",
"1. c #E8E8E8",
"2. c #2D2D2D",
"3. c #ECECEC",
"4. c #F0F0F0",
"5. c #DDDDDD",
"6. c #E2E2E2",
"7. c #DEDEDE",
"8. c #D7D7D7",
"9. c #F9F9F9",
" ",
" . . ",
" . + + . ",
" . + + . ",
" . + + . ",
" . + + . ",
" . + + . ",
" . + + . ",
" . + + . ",
" . + + . ",
" . + + . ",
" . + + . ",
" . + + . ",
" . . . . . . . . . . . . + + . . . . . . . . . . . . ",
" . + + + + + + + + + + + + + + + + + + + + + + + + . ",
" . + + + + + + + + + + + + + + + + + + + + + + + + . ",
" . . . . . . . . . . . . + + . . . . . . . . . . . . ",
" . + + . ",
" . + + . ",
" . + + . ",
" . + + . ",
" . + + . ",
" . + + . ",
" . + + . ",
" . + + . ",
" . + + . ",
" . + + . ",
" . + + . ",
" . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ",
" . + + + + + + + + + + + + + + + + + + + + + + + + + + + + . ",
" . + + + + + + + + + + + + + + + + + + + + + + + + + + + + + . ",
" . + + . . . . . . . . . . . . . . . . . . . . . . . . . + + + . ",
" . + + . . + + + . ",
" . + + . @ # # # # # # $ . + + + . ",
" . + + . % + + + + + + + & * . + + + . ",
" . + + . = - + + + + + + + + ; > . + + + . ",
" . + + . , ' + + + + + + + + ) ! . + + + . ",
" . + + . ~ { + + + ] ^ + + + / ( . + + + . ",
" . + + . _ : + + + + < [ + + + + } . + + + . ",
" . + + . | 1 + + + + 2 3 4 + + + 5 ! . + + + . ",
" . + + . 6 7 + + + 8 9 0 a + + + b < . + + + . ",
" . + + . = c d + + + e f g h + + + + i . + + + . ",
" . + + . j k + + + + l $ m n + + + + } . + + + . ",
" . + + . o p + + + + , q 5 r + + + s t . + + + . ",
" . + + . u % + + + + v w x y + + + + z . + + + . ",
" . + + . A B + + + + C D E F + + + + G . + + + . ",
" . + + . H I + + + + J K L M N v + + + + F w . + + + . ",
" . + + . u O + + + + + c P Q R S T + + + + + ! . + + + . ",
" . + + . | U + + + + + + + + + + + + + + + + R . + + + . ",
" . + + . 2 V + + + + + + + + + + + + + + + + W X . + + + . ",
" . + + . Y Z + + + + + + + + + + + + + + + + + + ` . + + + . ",
" . + + . ...+ + + + + +.@.#.$.%.} $.&.+ + + + + Z . + + + . ",
" . + + . ` y + + + + *.=.. . . . . -...;.+ + + + >.@ . + + + . ",
" . + + . ,.'.+ + + + + ).!.. ~.{.].+ + + + + ^. . + + + . ",
" . + + . /.+ + + + + + < K (._.+ + + + + :.<. . + + + . ",
" . + + . [.].+ + + + + }.|. 1.2.+ + + + + v 3. . + + + . ",
" . + + . 4.(.(.(.(.(.5.6. 7.8.(.(.(.(.5.9. . + + + . ",
" . + + . . + + + . ",
" . + + . . + + + . ",
" . + + . . + + + . ",
" . + + . . . . . . . . . . . . . . . . . . . . . . . . . + + + . ",
" . + + + + + + + + + + + + + + + + + + + + + + + + + + + + + . ",
" . + + + + + + + + + + + + + + + + + + + + + + + + + + + + . ",
" . . . . . . . . . . . . . . . . . . . . . . . . . . . . . "};

View File

@ -1,67 +1,124 @@
/* XPM */ /* XPM */
static char * cursor_label_hier64_xpm[] = { static char const * cursor_label_hier64_xpm[] = {
"64 64 3 1", "64 64 60 1",
" c None", " c None",
". c #000000", ". c #FFFFFF",
"+ c #FFFFFF", "+ c #000000",
"@ c #868686",
"# c #FEFEFE",
"$ c #1C1C1C",
"% c #CFCFCF",
"& c #9A9A9A",
"* c #3D3D3D",
"= c #313131",
"- c #DCDCDC",
"; c #9D9D9D",
"> c #ABABAB",
", c #262626",
"' c #D7D7D7",
") c #5C5C5C",
"! c #767676",
"~ c #F0F0F0",
"{ c #E7E7E7",
"] c #939393",
"^ c #999999",
"/ c #BBBBBB",
"( c #BEBEBE",
"_ c #C5C5C5",
": c #787878",
"< c #E2E2E2",
"[ c #EBEBEB",
"} c #F1F1F1",
"| c #EAEAEA",
"1 c #C8C8C8",
"2 c #9C9C9C",
"3 c #FCFCFC",
"4 c #8E8E8E",
"5 c #BFBFBF",
"6 c #C3C3C3",
"7 c #F9F9F9",
"8 c #2A2A2A",
"9 c #DEDEDE",
"0 c #FAFAFA",
"a c #D5D5D5",
"b c #A1A1A1",
"c c #FDFDFD",
"d c #494949",
"e c #E0E0E0",
"f c #B2B2B2",
"g c #686868",
"h c #303030",
"i c #373737",
"j c #ECECEC",
"k c #818181",
"l c #8D8D8D",
"m c #C0C0C0",
"n c #D8D8D8",
"o c #828282",
"p c #F7F7F7",
"q c #F5F5F5",
"r c #161616",
"s c #464646",
"t c #F3F3F3",
"u c #484848",
" ", " ",
" ++ ", " .. ",
" +..+ ", " .++. ",
" +..+ ", " .++. ",
" +..+ ", " .++. ",
" +..+ ", " .++. ",
" +..+ ", " .++. ",
" +..+ ", " .++. ",
" +..+ ", " .++. ",
" +..+ ", " .++. ",
" +..+ ", " .++. ",
" +..+ ", " .++. ",
" +..+ ", " .++. ",
" ++++++++++++..++++++++++++ ", " ............++............ ",
" +............ ............+ ", " .++++++++++++ ++++++++++++. ",
" +............ ............+ ", " .++++++++++++ ++++++++++++. ",
" ++++++++++++..++++++++++++ ", " ............++............ ",
" +..+ ", " .++. ",
" +..+ ", " .++. ",
" +..+ ", " .++. ",
" +..+ ", " .++. ",
" +..+ ", " .++. ",
" +..+ ", " .++. ",
" +..+ ", " .++. ",
" +..+ ", " .++. ",
" +..+ ", " .++. ",
" +..+ ", " .++. ",
" +..+ ", " .++. ",
" ++ ", " .. ",
" ", " ",
" ", " ",
" ", " ......... ",
" ++++++++ ", " @+++++++++@ ",
" +........+ ", " #$+++++++++$# ",
" +........+ ", " %+++++++++++% ",
" +..........+ +++++++++ ", " &+++++++++++& ......... ",
" +..........+ +........++ ", " *+++++=+++++* .++++++++.. ",
" +............+ +.........++ ", " -++++++;++++++- .+++++++++.. ",
" +............+ +..+++++...++ ", " >+++++,',+++++> .++.....+++.. ",
" +............+ +..+ +...++ ", " )+++++!~!+++++) .++. .+++.. ",
" ++.....++.....++ +..+ +...++ ", " {++++++].^++++++{ .++. .+++.. ",
" +.....+ +.....+ +..+ +...++ ", " /++++++(._++++++/ .++. .+++.. ",
" +.....+ +.....+ +..+ +...++ ", " :++++++< [++++++: .++. .+++.. ",
" +......+ +......+ +..+ +...++ ", " }++++++)| )++++++} .++. .+++.. ",
" +......+ +......+ +..+ +...+ ", " 1++++++23 ;++++++1 .++. .+++. ",
" ++.....+ +.....++ +..+ +...+ ", " 4++++++5 6++++++4 .++. .+++. ",
" +......++++++......+ +..+ +...++ ", " 78++++++9707<++++++87 .++. .+++.. ",
" +..................+ +..+ +...++ ", " a+++++++++++++++++++a .++. .+++.. ",
" ++..................++ +..+ +...++ ", " b+++++++++++++++++++b .++. .+++.. ",
" +....................+ +..+ +...++ ", " cd+++++++++++++++++++dc .++. .+++.. ",
" ++....................++ +..+ +...++ ", " e+++++++++++++++++++++e .++. .+++.. ",
" +........++++++........+ +..+++++...++ ", " f+++++++++++++++++++++f .++.....+++.. ",
" ++......+++ +++......++ +.........++ ", " .g++++++h.......i++++++g. .+++++++++.. ",
" +.......+ +.......+ +........++ ", " j+++++++k. .l+++++++j .++++++++.. ",
" +......++ ++......+ +++++++++ ", " .m+++++++n 9+++++++m. ......... ",
" +......+ +......+ ", " .o+++++++} p+++++++o. ",
" +.....++ ++.....+ ", " qr++++++st .u++++++rq ",
" +++++++ +++++++ ", " ......... ......... ",
" ", " ",
" ", " ",
" ", " ",

View File

@ -1,67 +1,124 @@
/* XPM */ /* XPM */
static char * cursor_label_net64_xpm[] = { static char const * cursor_label_net64_xpm[] = {
"64 64 3 1", "64 64 60 1",
" c None", " c None",
". c #000000", ". c #FFFFFF",
"+ c #FFFFFF", "+ c #000000",
"@ c #868686",
"# c #FEFEFE",
"$ c #1C1C1C",
"% c #CFCFCF",
"& c #9A9A9A",
"* c #3D3D3D",
"= c #313131",
"- c #DCDCDC",
"; c #9D9D9D",
"> c #ABABAB",
", c #262626",
"' c #D7D7D7",
") c #5C5C5C",
"! c #767676",
"~ c #F0F0F0",
"{ c #E7E7E7",
"] c #939393",
"^ c #999999",
"/ c #BBBBBB",
"( c #BEBEBE",
"_ c #C5C5C5",
": c #787878",
"< c #E2E2E2",
"[ c #EBEBEB",
"} c #F1F1F1",
"| c #EAEAEA",
"1 c #C8C8C8",
"2 c #9C9C9C",
"3 c #FCFCFC",
"4 c #8E8E8E",
"5 c #BFBFBF",
"6 c #C3C3C3",
"7 c #F9F9F9",
"8 c #2A2A2A",
"9 c #DEDEDE",
"0 c #FAFAFA",
"a c #D5D5D5",
"b c #A1A1A1",
"c c #FDFDFD",
"d c #494949",
"e c #E0E0E0",
"f c #B2B2B2",
"g c #686868",
"h c #303030",
"i c #373737",
"j c #ECECEC",
"k c #818181",
"l c #8D8D8D",
"m c #C0C0C0",
"n c #D8D8D8",
"o c #828282",
"p c #F7F7F7",
"q c #F5F5F5",
"r c #161616",
"s c #464646",
"t c #F3F3F3",
"u c #484848",
" ", " ",
" ++ ", " .. ",
" +..+ ", " .++. ",
" +..+ ", " .++. ",
" +..+ ", " .++. ",
" +..+ ", " .++. ",
" +..+ ", " .++. ",
" +..+ ", " .++. ",
" +..+ ", " .++. ",
" +..+ ", " .++. ",
" +..+ ", " .++. ",
" +..+ ", " .++. ",
" +..+ ", " .++. ",
" ++++++++++++..++++++++++++ ", " ............++............ ",
" +............ ............+ ", " .++++++++++++ ++++++++++++. ",
" +............ ............+ ", " .++++++++++++ ++++++++++++. ",
" ++++++++++++..++++++++++++ ", " ............++............ ",
" +..+ ", " .++. ",
" +..+ ", " .++. ",
" +..+ ", " .++. ",
" +..+ ", " .++. ",
" +..+ ", " .++. ",
" +..+ ", " .++. ......... ",
" +..+ ++++++++ ", " .++. @+++++++++@ ",
" +..+ +........+ ", " .++. #$+++++++++$# ",
" +..+ +........+ ", " .++. %+++++++++++% ",
" +..+ +..........+ ", " .++. &+++++++++++& ",
" +..+ +..........+ ", " .++. *+++++=+++++* ",
" ++ +............+ ", " .. -++++++;++++++- ",
" ++ +............+ ", " .. >+++++,',+++++> ",
" +............+ ", " )+++++!~!+++++) ",
" ++.....++.....++ ", " {++++++].^++++++{ ",
" +.....+ +.....+ ", " /++++++(._++++++/ ",
" +.....+ +.....+ ", " :++++++< [++++++: ",
" +......+ +......+ ", " }++++++)| )++++++} ",
" +......+ +......+ ", " 1++++++23 ;++++++1 ",
" ++.....+ +.....++ ", " 4++++++5 6++++++4 ",
" +......++++++......+ ", " 78++++++9707<++++++87 ",
" +..................+ ", " a+++++++++++++++++++a ",
" ++..................++ ", " b+++++++++++++++++++b ",
" +....................+ ", " cd+++++++++++++++++++dc ",
" ++....................++ ", " e+++++++++++++++++++++e ",
" +........++++++........+ ", " f+++++++++++++++++++++f ",
" ++......+++ +++......++ ", " .g++++++h.......i++++++g. ",
" +.......+ +.......+ ", " j+++++++k. .l+++++++j ",
" +......++ ++......+ ", " .m+++++++n 9+++++++m. ",
" +......+ +......+ ", " .o+++++++} p+++++++o. ",
" +.....++ ++.....+ ", " qr++++++st .u++++++rq ",
" +++++++ +++++++ ", " ......... ......... ",
" ", " ",
" ", " ",
" ", " ",
" ########################################## ",
" #++++++++++++++++++++++++++++++++++++++++++# ",
" #++++++++++++++++++++++++++++++++++++++++++# ",
" #++++++++++++++++++++++++++++++++++++++++++# ",
" .......................................... ", " .......................................... ",
" .......................................... ", " ",
" .......................................... ",
" .......................................... ",
" ++++++++++++++++++++++++++++++++++++++++++ ",
" ++++++++++++++++++++++++++++++++++++++++++ ",
" ", " ",
" ", " ",
" ", " ",

View File

@ -1,5 +1,5 @@
/* XPM */ /* XPM */
static char * cursor_line_bus64_xpm[] = { static char const * cursor_line_bus64_xpm[] = {
"64 64 4 1", "64 64 4 1",
" c None", " c None",
". c #000000", ". c #000000",

View File

@ -1,5 +1,5 @@
/* XPM */ /* XPM */
static char * cursor_line_graphic64_xpm[] = { static char const * cursor_line_graphic64_xpm[] = {
"64 64 3 1", "64 64 3 1",
" c None", " c None",
". c #000000", ". c #000000",

View File

@ -1,5 +1,5 @@
/* XPM */ /* XPM */
static char * cursor_line_wire_add64_xpm[] = { static char const * cursor_line_wire_add64_xpm[] = {
"64 64 4 1", "64 64 4 1",
" c None", " c None",
". c #000000", ". c #000000",

View File

@ -0,0 +1,71 @@
/* XPM */
static char const * cursor_line_wire64_xpm[] = {
"64 64 4 1",
" c None",
". c #FFFFFF",
"+ c #008000",
"@ c #000000",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" .. ",
" .... ",
" ..++.. ",
" ..++++.. ",
" ..+++++.. ",
" ..+++++.. ",
" ..+++++.. ",
" ..+++++.. ",
" ..+++++.. ",
" ..+++++.. ",
" ..+++++.. ",
" ..+++++.. ",
" ..+++++.. ",
" ..+++++.. ",
" ..+++++.. ",
" ..+++++.. ",
" ..+++++.. ",
" ..+++++.. ",
" ..+++++.. ",
" ..+++++.. ",
" ..+++++.. ",
" ..+++++.. ",
" ..+++++.. ",
" ..+++++.. ",
" ..+++++.. ",
" ..+++++.. ",
" ..+++++.. ",
" ..+++++.. ",
" ..+++++.. ",
" ..+++++.. ",
" ..+++++.. ",
" ..+++++.. ",
" ..++++.. ",
" ..++.. ",
" .. .... ",
" .@@. .. ",
" .@@. ",
" .@@. ",
" .@@. ",
" .@@. ",
" .@@. ",
" .@@. ",
" ........@@........ ",
" .@@@@@@@@ @@@@@@@@. ",
" .@@@@@@@@ @@@@@@@@. ",
" ........@@........ ",
" .@@. ",
" .@@. ",
" .@@. ",
" .@@. ",
" .@@. ",
" .@@. ",
" .@@. ",
" .. ",
" "};

View File

@ -1,5 +1,5 @@
/* XPM */ /* XPM */
static char * cursor_measure64_xpm[] = { static char const * cursor_measure64_xpm[] = {
"64 64 3 1", "64 64 3 1",
" c None", " c None",
". c #000000", ". c #000000",

View File

@ -1,5 +1,5 @@
/* XPM */ /* XPM */
static char * cursor_pencil64_xpm[] = { static char const * cursor_pencil64_xpm[] = {
"64 64 3 1", "64 64 3 1",
" c None", " c None",
". c #000000", ". c #000000",

View File

@ -1,5 +1,5 @@
/* XPM */ /* XPM */
static char * cursor_place_black64_xpm[] = { static char const * cursor_place_black64_xpm[] = {
"64 64 4 1", "64 64 4 1",
" c None", " c None",
". c #000000", ". c #000000",

View File

@ -1,5 +1,5 @@
/* XPM */ /* XPM */
static char * cursor_place64_xpm[] = { static char const * cursor_place64_xpm[] = {
"64 64 4 1", "64 64 4 1",
" c None", " c None",
". c #000000", ". c #000000",

View File

@ -1,5 +1,5 @@
/* XPM */ /* XPM */
static char * cursor_select_lasso64_xpm[] = { static char const * cursor_select_lasso64_xpm[] = {
"64 64 3 1", "64 64 3 1",
" c None", " c None",
". c #000000", ". c #000000",

View File

@ -1,5 +1,5 @@
/* XPM */ /* XPM */
static char * cursor_select_m_black64_xpm[] = { static char const * cursor_select_m_black64_xpm[] = {
"64 64 3 1", "64 64 3 1",
" c None", " c None",
". c #000000", ". c #000000",

View File

@ -1,5 +1,5 @@
/* XPM */ /* XPM */
static char * cursor_select_m64_xpm[] = { static char const * cursor_select_m64_xpm[] = {
"64 64 3 1", "64 64 3 1",
" c None", " c None",
". c #000000", ". c #000000",

View File

@ -1,5 +1,5 @@
/* XPM */ /* XPM */
static char * cursor_select_window64_xpm[] = { static char const * cursor_select_window64_xpm[] = {
"64 64 3 1", "64 64 3 1",
" c None", " c None",
". c #000000", ". c #000000",

View File

@ -1,5 +1,5 @@
/* XPM */ /* XPM */
static char * cursor_subtract64_xpm[] = { static char const * cursor_subtract64_xpm[] = {
"64 64 3 1", "64 64 3 1",
" c None", " c None",
". c #000000", ". c #000000",

View File

@ -1,60 +1,117 @@
/* XPM */ /* XPM */
static char * cursor_text64_xpm[] = { static char const * cursor_text64_xpm[] = {
"64 64 3 1", "64 64 60 1",
" c None", " c None",
". c #000000", ". c #FFFFFF",
"+ c #FFFFFF", "+ c #000000",
" ", "@ c #868686",
" ++ ", "# c #FEFEFE",
" +..+ ", "$ c #1C1C1C",
" +..+ ", "% c #CFCFCF",
" +..+ ", "& c #9A9A9A",
" +..+ ", "* c #3D3D3D",
" +..+ ", "= c #313131",
" +..+ ", "- c #DCDCDC",
" +..+ ", "; c #9D9D9D",
" +..+ ", "> c #ABABAB",
" +..+ ", ", c #262626",
" +..+ ", "' c #D7D7D7",
" +..+ ", ") c #5C5C5C",
" ++++++++++++..++++++++++++ ", "! c #767676",
" +............ ............+ ", "~ c #F0F0F0",
" +............ ............+ ", "{ c #E7E7E7",
" ++++++++++++..++++++++++++ ", "] c #939393",
" +..+ ", "^ c #999999",
" +..+ ", "/ c #BBBBBB",
" +..+ ", "( c #BEBEBE",
" +..+ ", "_ c #C5C5C5",
" +..+ ++++++++ ", ": c #787878",
" +..+ +........+ ", "< c #E2E2E2",
" +..+ +........+ ", "[ c #EBEBEB",
" +..+ +..........+ ", "} c #F1F1F1",
" +..+ +..........+ ", "| c #EAEAEA",
" +..+ +............+ ", "1 c #C8C8C8",
" +..+ +............+ ", "2 c #9C9C9C",
" ++ +............+ ", "3 c #FCFCFC",
" ++.....++.....++ ", "4 c #8E8E8E",
" +.....+ +.....+ ", "5 c #BFBFBF",
" +.....+ +.....+ ", "6 c #C3C3C3",
" +......+ +......+ ", "7 c #F9F9F9",
" +......+ +......+ ", "8 c #2A2A2A",
" ++.....+ +.....++ ", "9 c #DEDEDE",
" +......++++++......+ ", "0 c #FAFAFA",
" +..................+ ", "a c #D5D5D5",
" ++..................++ ", "b c #A1A1A1",
" +....................+ ", "c c #FDFDFD",
" ++....................++ ", "d c #494949",
" +........++++++........+ ", "e c #E0E0E0",
" ++......+++ +++......++ ", "f c #B2B2B2",
" +.......+ +.......+ ", "g c #686868",
" +......++ ++......+ ", "h c #303030",
" +......+ +......+ ", "i c #373737",
" +.....++ ++.....+ ", "j c #ECECEC",
" +++++++ +++++++ ", "k c #818181",
" ", "l c #8D8D8D",
" ", "m c #C0C0C0",
" ", "n c #D8D8D8",
"o c #828282",
"p c #F7F7F7",
"q c #F5F5F5",
"r c #161616",
"s c #464646",
"t c #F3F3F3",
"u c #484848",
" ", " ",
" .. ",
" .++. ",
" .++. ",
" .++. ",
" .++. ",
" .++. ",
" .++. ",
" .++. ",
" .++. ",
" .++. ",
" .++. ",
" .++. ",
" ............++............ ",
" .++++++++++++ ++++++++++++. ",
" .++++++++++++ ++++++++++++. ",
" ............++............ ",
" .++. ",
" .++. ",
" .++. ",
" .++. ",
" .++. ",
" .++. ",
" .++. ",
" .++. ......... ",
" .++. @+++++++++@ ",
" .++. #$+++++++++$# ",
" .++. %+++++++++++% ",
" .. &+++++++++++& ",
" *+++++=+++++* ",
" -++++++;++++++- ",
" >+++++,',+++++> ",
" )+++++!~!+++++) ",
" {++++++].^++++++{ ",
" /++++++(._++++++/ ",
" :++++++< [++++++: ",
" }++++++)| )++++++} ",
" 1++++++23 ;++++++1 ",
" 4++++++5 6++++++4 ",
" 78++++++9707<++++++87 ",
" a+++++++++++++++++++a ",
" b+++++++++++++++++++b ",
" cd+++++++++++++++++++dc ",
" e+++++++++++++++++++++e ",
" f+++++++++++++++++++++f ",
" .g++++++h.......i++++++g. ",
" j+++++++k. .l+++++++j ",
" .m+++++++n 9+++++++m. ",
" .o+++++++} p+++++++o. ",
" qr++++++st .u++++++rq ",
" ......... ......... ",
" ", " ",
" ", " ",
" ", " ",

View File

@ -1,5 +1,5 @@
/* XPM */ /* XPM */
static char * cursor_xor64_xpm[] = { static char const * cursor_xor64_xpm[] = {
"64 64 3 1", "64 64 3 1",
" c None", " c None",
". c #000000", ". c #000000",

View File

@ -1,6 +1,6 @@
/* XPM */ /* XPM */
static char const *cursor_zoom_xpm[] = { static char const * cursor_zoom_in_xpm[] = {
"32 32 3 1 6 6", "32 32 3 1",
" c None", " c None",
". c #FFFFFF", ". c #FFFFFF",
"+ c #000000", "+ c #000000",

View File

@ -1,49 +1,49 @@
/* XPM */ /* XPM */
static char * cursor_zoom_in64_xpm[] = { static char const * cursor_zoom_in64_xpm[] = {
"64 64 3 1", "64 64 3 1",
" c None", " c None",
". c #000000", ". c #FFFFFF",
"+ c #FFFFFF", "+ c #000000",
" ", " ",
" ++++++++ ", " ........ ",
" +++......+++ ", " ...++++++... ",
" +++... ...+++ ", " ...+++ +++... ",
" ++... ...++ ", " ..+++ +++.. ",
" ++.. ..++ ", " ..++ ++.. ",
" +.. ..+ ", " .++ ++. ",
" ++. ++ .++ ", " ..+ .. +.. ",
" +.. +..+ ..+ ", " .++ .++. ++. ",
"++. +..+ .++ ", "..+ .++. +.. ",
"+.. +..+ ..+ ", ".++ .++. ++. ",
"+. ++++..++++ .+ ", ".+ ....++.... +. ",
"+. +..........+ .+ ", ".+ .++++++++++. +. ",
"+. +..........+ .+ ", ".+ .++++++++++. +. ",
"+. ++++..++++ .+ ", ".+ ....++.... +. ",
"+.. +..+ ..+ ", ".++ .++. ++. ",
"++. +..+ .++ ", "..+ .++. +.. ",
" +.. +..+ ..+ ", " .++ .++. ++. ",
" ++. ++ .++ ", " ..+ .. +.. ",
" +.. ..+++ ", " .++ ++... ",
" ++.. ..++..+++ ", " ..++ ++..++... ",
" ++... ...++...+..+ ", " ..+++ +++..+++.++. ",
" +++... ...+++...+....+ ", " ...+++ +++...+++.++++. ",
" +++......+++ +..+.. .++ ", " ...++++++... .++.++ ++. ",
" ++++++++ ++.. ..+ ", " ........ ..++ ++. ",
" +.. .++ ", " .++ ++. ",
" +.. ..+ ", " .++ ++. ",
" +.. .++ ", " .++ ++. ",
" ++. ..+ ", " .++ ++. ",
" +.. .++ ", " .++ ++. ",
" ++. ..+ ", " .++ ++. ",
" +.. .++ ", " .++ ++. ",
" ++. ..+ ", " .++ ++. ",
" +.. .++ ", " .++ ++. ",
" ++. .++ ", " .++ ++. ",
" +.. ..+ ", " .++ ++. ",
" ++. .++ ", " .++ ++. ",
" +....+ ", " .++++. ",
" ++++ ", " .++. ",
" ++ ", " .. ",
" ", " ",
" ", " ",
" ", " ",

View File

@ -1,5 +1,5 @@
/* XPM */ /* XPM */
static char * cursor_zoom_out64_xpm[] = { static char const * cursor_zoom_out64_xpm[] = {
"64 64 3 1", "64 64 3 1",
" c None", " c None",
". c #000000", ". c #000000",

View File

@ -0,0 +1,12 @@
#define voltage_probe_width 32
#define voltage_probe_height 32
static unsigned char voltage_probe_bits[] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x80, 0x07, 0x00, 0x00, 0xc0, 0x0f, 0x00,
0x00, 0xe0, 0x1f, 0x00, 0x00, 0xf0, 0x1f, 0x00, 0x00, 0xf8, 0x0f, 0x00, 0x00, 0xfc, 0x07, 0x00,
0x00, 0xfe, 0x03, 0x00, 0x00, 0xff, 0x01, 0x00, 0x80, 0xff, 0x00, 0x00, 0xc0, 0x7f, 0x00, 0x00,
0xe0, 0x3f, 0x00, 0x00, 0xe0, 0x1f, 0x00, 0x00, 0xfc, 0x0f, 0x00, 0x00, 0xfc, 0x07, 0x00, 0x00,
0xfc, 0x03, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0xf4, 0x00, 0x00, 0x00, 0xea, 0x00, 0x00, 0x00,
0x05, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, 0x50,
0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x0a,
0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00 };

View File

@ -0,0 +1,38 @@
/* XPM */
static char const* cursor_tune_xpm[] = {
"32 32 3 1",
" c None",
". c #000000",
"+ c #FFFFFF",
" ",
" ",
" ",
" .. ",
" .... ",
" ...... ",
" ........ ",
" ......... ",
" ......... ",
" ......... ",
" ......... ",
" ......... ",
" ......... ",
" ......... ",
" ......... ",
" ........ ",
" .......... ",
" ......... ",
" ........ ",
" ..... ",
" .+.... ",
" .+. ... ",
" .+. ",
" .+. ",
" .+. ",
" .+. ",
" .+. ",
" ..+. ",
" .++. ",
".+++. ",
" .+. ",
" . "};

View File

@ -0,0 +1,70 @@
/* XPM */
static char const * cursor_tune64_xpm[] = {
"64 64 3 1",
" c None",
". c #000000",
"+ c #FFFFFF",
" ",
" ",
" ",
" ",
" ",
" .. ",
" .... ",
" ...... ",
" ........ ",
" .......... ",
" ............ ",
" .............. ",
" ................ ",
" .................. ",
" ................... ",
" ................... ",
" ................... ",
" ................... ",
" ................... ",
" ................... ",
" ................... ",
" ................... ",
" ................... ",
" ................... ",
" ................... ",
" ................... ",
" ................... ",
" ................... ",
" ................... ",
" .................. ",
" ................. ",
" ................. ",
" ..................... ",
" .................... ",
" ................... ",
" .................. ",
" ................. ",
" ................ ",
" ........... ",
" ........... ",
" ..++........ ",
" ..+++........ ",
" ..+++.. ...... ",
" ..+++.. ...... ",
" ..+++.. ",
" ..+++.. ",
" ..+++.. ",
" ..+++.. ",
" ..+++.. ",
" ..+++.. ",
" ..+++.. ",
" ..+++.. ",
" ..+++.. ",
" ..+++.. ",
" ....+++.. ",
" ...++++.. ",
" ..+++++.. ",
" ..++++++. ",
"..++++++.. ",
"..++++++.. ",
" ..++++.. ",
" ..++.. ",
" .... ",
" .. "};

View File

@ -0,0 +1,38 @@
/* XPM */
static char const * voltage_probe_xpm[] = {
"32 32 3 1",
" c None",
". c #FFFFFF",
"+ c #000000",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ..... ",
" .+++++. ",
" .++...++. ",
" ..++. .++. ",
" ..+++. .+. ",
" .++++. .+. ",
" .+++++. .++. ",
" .++++++. .++. ",
" .++++++. .++.",
" .++++++. .. ",
" .++++++. ",
" .++++++. ",
" .++++++. ",
" .++++++. ",
" .++++++. ",
" .++++++. ",
" .++++++. ",
" .+++++. ",
" .++++. ",
" .++... ",
" .++. ",
".++. ",
".+. ",
" . "};

View File

@ -0,0 +1,70 @@
/* XPM */
static char const * voltage_probe64_xpm[] = {
"64 64 3 1",
" c None",
". c #FFFFFF",
"+ c #000000",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" .... ",
" ...++++... ",
" .++++++++++. ",
" .++++++++++++. ",
" .+++++....+++++. ",
" .+++++. .+++++. ",
" .+++++. .+++++. ",
" ...+++++. .++++. ",
" .+++++++. .+++. ",
" ...+++++++. .+++. ",
" .+++++++++. .++. ",
" .+++++++++. .+++. ",
" .++++++++++. .++++. ",
" .+++++++++++. .+++++. ",
" .++++++++++++. .+++++. ",
" .+++++++++++++. .+++++. ",
" .+++++++++++++. .+++++. ",
" .+++++++++++++. .++++. ",
" .+++++++++++++. .... ",
" .+++++++++++++. ",
" .+++++++++++++. ",
" .+++++++++++++. ",
" .+++++++++++++. ",
" .+++++++++++++. ",
" .+++++++++++++. ",
" .+++++++++++++. ",
" .+++++++++++++. ",
" .+++++++++++++. ",
" .+++++++++++++. ",
" .+++++++++++++. ",
" .+++++++++++++. ",
" .+++++++++++++. ",
" .+++++++++++++. ",
" .++++++++++++. ",
" .+++++++++++. ",
" .++++++++++. ",
" .+++++++++. ",
" .+++++++++. ",
" .+++++..... ",
" .+++++. ",
" .+++++. ",
" .+++++. ",
" .+++++. ",
" .++++. ",
" .+++. ",
" .+.. ",
" ",
" "};

View File

@ -1,5 +1,5 @@
/* XPM */ /* XPM */
static char *icon_kicad[] = { static char const *icon_kicad[] = {
/* columns rows colors chars-per-pixel */ /* columns rows colors chars-per-pixel */
"128 128 183 2 ", "128 128 183 2 ",
" c #7C537B", " c #7C537B",

View File

@ -1,5 +1,5 @@
/* XPM */ /* XPM */
static char *icon_kicad_64[] = { static char const *icon_kicad_64[] = {
/* columns rows colors chars-per-pixel */ /* columns rows colors chars-per-pixel */
"64 64 146 2 ", "64 64 146 2 ",
" c #FF6D00", " c #FF6D00",