Bitmaps: a few improvements from review

This commit is contained in:
Jon Evans 2021-03-10 20:48:37 -05:00
parent 405fa183b2
commit 44f88f840c
7 changed files with 76 additions and 127 deletions

View File

@ -1,76 +0,0 @@
# This program source code file is part of KiCad, a free EDA CAD application.
#
# Copyright (C) 2021 KiCad Developers, see AUTHORS.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 3 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, see <http://www.gnu.org/licenses/>.
# Creates the bitmap_info header file from a temporary file created by bitmaps_png/CMakeLists.txt
# Invoke with the following parameters:
# inputFile: Path to the temporary file containing the contents of the bitmap info list
# outputFile: Path to write the header to
set( header_content "
/*
* This program source code file is part of KiCad, a free EDA CAD application.
*
* Copyright (C) 2021 KiCad Developers, see AUTHORS.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 3 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, see <http://www.gnu.org/licenses/>.
*/
/**
* This file is auto-generated by CMake when MAINTAIN_PNGS is on. Do not edit by hand!
*/
#ifndef KICAD_BITMAP_INFO_H
#define KICAD_BITMAP_INFO_H
#include <vector>
#include <bitmaps/bitmaps_list.h>
struct BITMAP_INFO
{
BITMAPS id;
wxString filename;
int height;
wxString theme;
};
const std::vector<BITMAP_INFO> g_BitmapInfo = {
" )
set( footer_content "
};
#endif // KICAD_BITMAP_INFO_H
" )
file( READ "${inputFile}" file_content )
file( WRITE "${outputFile}" "${header_content}" )
file( APPEND "${outputFile}" "${file_content}" )
file( APPEND "${outputFile}" "${footer_content}" )

View File

@ -594,7 +594,8 @@ set( TMP_DIR "${CMAKE_CURRENT_BINARY_DIR}/tmp" )
set( CREATE_LOG_FILES true )
set( BITMAP_INFO_FILE "${CMAKE_SOURCE_DIR}/include/bitmaps/bitmap_info.h" )
set( BITMAP_INFO_TEMP_FILE ${TMP_DIR}/bitmap_info_contents.h )
set( BITMAP_INFO_TEMPLATE "${CMAKE_SOURCE_DIR}/include/bitmaps/bitmap_info.h.in" )
set( BITMAP_INFO_LIST "" )
set( ALL_PNGS "" )
@ -662,7 +663,7 @@ endfunction()
# Function bitmap_dir
# converts all the basenames in bmapList found in hardcoded 'sources' dir
# and and puts them into cpp_${pngHeight} and png_${pngHeight} directories.
function( bitmap_dir pngWidth pngHeight bmapList theme )
function( bitmap_dir pngWidth pngHeight bmapList )
set( pngDir "${CMAKE_CURRENT_SOURCE_DIR}/png" )
@ -686,6 +687,7 @@ function( bitmap_dir pngWidth pngHeight bmapList theme )
set( tmpFile "${TMP_DIR}/${pngFile}" )
if( NOT EXISTS ${svgFile} )
message( "Warning: Source SVG ${svgFile} does not exist!" )
continue()
endif()
@ -695,32 +697,21 @@ function( bitmap_dir pngWidth pngHeight bmapList theme )
#png2png( inputFile outFile )
png2png( ${tmpFile} ${pngPath} )
set( bitmapInfo " { BITMAPS::${bmn}, wxT( \"${pngFile}\" ), "
"${pngHeight}, wxT( \"${theme}\" ) },\n" )
file( APPEND ${BITMAP_INFO_TEMP_FILE} ${bitmapInfo} )
set( bitmapInfo
" { BITMAPS::${bmn}, wxT( \"${pngFile}\" ), ${pngHeight}, wxT( \"${theme}\" ) },\n"
)
set( BITMAP_INFO_LIST "${BITMAP_INFO_LIST}${bitmapInfo}" )
list( APPEND ALL_PNGS ${pngPath} )
endforeach()
endforeach()
set( ALL_PNGS ${ALL_PNGS} PARENT_SCOPE )
set( BITMAP_INFO_LIST ${BITMAP_INFO_LIST} PARENT_SCOPE )
endfunction()
# Creates the bitmap_info header file after creating all PNGs
function( generate_bitmap_info inputFile outputFile )
add_custom_command(
OUTPUT ${outputFile}
COMMAND ${CMAKE_COMMAND} -DinputFile=${inputFile} -DoutputFile=${outputFile}
-P ${CMAKE_MODULE_PATH}/BuildSteps/CreateBitmapInfo.cmake
DEPENDS ${inputFile} ${CMAKE_MODULE_PATH}/BuildSteps/CreateBitmapInfo.cmake
COMMENT "Creating ${outputFile}"
VERBATIM
)
endfunction()
include( FindUnixCommands )
set( BITMAP_ARCHIVE_PATH ${CMAKE_BINARY_DIR}/resources/images.tar.gz )
@ -787,43 +778,30 @@ if( MAINTAIN_PNGS )
endif( NOT pngcrush_EXECUTABLE )
endif( NOT pngcrush_FOUND )
if( NOT KICAD_ICON_THEME )
set( KICAD_ICON_THEME "light" CACHE STRING "Name of the theme directory for icon sources" )
endif()
message( STATUS "Creating icons for ${KICAD_ICON_THEME} theme" )
file( WRITE ${BITMAP_INFO_TEMP_FILE} )
# these 3 cmake commands for each desired bitmap size set, repeat as needed:
bitmap_dir( 16 16 "${BMAPS_SMALL}" ${KICAD_ICON_THEME} )
bitmap_dir( 16 16 "${BMAPS_SMALL}" )
bitmap_dir( 24 24 "${BMAPS_MID}" ${KICAD_ICON_THEME} )
bitmap_dir( 24 24 "${BMAPS_MID}" )
bitmap_dir( 32 32 "${BMAPS_32}" ${KICAD_ICON_THEME} )
bitmap_dir( 32 32 "${BMAPS_32}" )
bitmap_dir( 22 22 "${BMAPS_22}" ${KICAD_ICON_THEME} )
bitmap_dir( 22 22 "${BMAPS_22}" )
bitmap_dir( 24 24 "${BMAPS_24}" ${KICAD_ICON_THEME} )
bitmap_dir( 24 24 "${BMAPS_24}" )
bitmap_dir( 64 64 "${BMAPS_64}" ${KICAD_ICON_THEME} )
bitmap_dir( 64 64 "${BMAPS_64}" )
bitmap_dir( 128 128 "${BMAPS_128}" ${KICAD_ICON_THEME} )
bitmap_dir( 128 128 "${BMAPS_128}" )
bitmap_dir( 48 48 "${BMAPS_BIG}" ${KICAD_ICON_THEME} )
bitmap_dir( 48 48 "${BMAPS_BIG}" )
generate_bitmap_info( ${BITMAP_INFO_TEMP_FILE} ${BITMAP_INFO_FILE} )
configure_file( ${BITMAP_INFO_TEMPLATE} ${BITMAP_INFO_FILE} NEWLINE_STYLE UNIX )
add_custom_target( generate_pngs ALL
DEPENDS ${ALL_PNGS}
COMMENT "Creating PNGs from SVGs"
)
add_custom_target( bitmap_info ALL
DEPENDS ${BITMAP_INFO_FILE}
COMMENT "Creating bitmap_info header"
)
add_dependencies( bitmap_archive generate_pngs bitmap_info )
add_dependencies( bitmap_archive generate_pngs )
endif( MAINTAIN_PNGS )

View File

@ -126,7 +126,7 @@ void ACTION_MENU::DisplayTitle( bool aDisplay )
InsertSeparator( 0 );
Insert( 0, new wxMenuItem( this, wxID_NONE, m_title, wxEmptyString, wxITEM_NORMAL ) );
if( m_icon != BITMAPS::INVALID_BITMAP )
if( !!m_icon )
AddBitmapToMenuItem( FindItemByPosition( 0 ), KiBitmap( m_icon ) );
m_titleDisplayed = true;
@ -141,7 +141,7 @@ wxMenuItem* ACTION_MENU::Add( const wxString& aLabel, int aId, BITMAPS aIcon )
wxMenuItem* item = new wxMenuItem( this, aId, aLabel, wxEmptyString, wxITEM_NORMAL );
if( aIcon != BITMAPS::INVALID_BITMAP )
if( !!aIcon )
AddBitmapToMenuItem( item, KiBitmap( aIcon ) );
return Append( item );
@ -156,7 +156,7 @@ wxMenuItem* ACTION_MENU::Add( const wxString& aLabel, const wxString& aTooltip,
wxMenuItem* item = new wxMenuItem( this, aId, aLabel, aTooltip,
aIsCheckmarkEntry ? wxITEM_CHECK : wxITEM_NORMAL );
if( aIcon != BITMAPS::INVALID_BITMAP )
if( !!aIcon )
AddBitmapToMenuItem( item, KiBitmap( aIcon ) );
return Append( item );
@ -171,7 +171,7 @@ wxMenuItem* ACTION_MENU::Add( const TOOL_ACTION& aAction, bool aIsCheckmarkEntry
wxMenuItem* item = new wxMenuItem( this, aAction.GetUIId(), aAction.GetMenuItem(),
aAction.GetDescription(),
aIsCheckmarkEntry ? wxITEM_CHECK : wxITEM_NORMAL );
if( icon != BITMAPS::INVALID_BITMAP )
if( !!icon )
AddBitmapToMenuItem( item, KiBitmap( icon ) );
m_toolActions[aAction.GetUIId()] = &aAction;
@ -187,7 +187,7 @@ wxMenuItem* ACTION_MENU::Add( ACTION_MENU* aMenu )
wxASSERT_MSG( !menuCopy->m_title.IsEmpty(), "Set a title for ACTION_MENU using SetTitle()" );
if( aMenu->m_icon != BITMAPS::INVALID_BITMAP )
if( !!aMenu->m_icon )
{
wxMenuItem* newItem = new wxMenuItem( this, -1, menuCopy->m_title );
AddBitmapToMenuItem( newItem, KiBitmap( aMenu->m_icon ) );

View File

@ -66,7 +66,7 @@ void CONDITIONAL_MENU::AddItem( int aId, const wxString& aText, const wxString&
{
wxMenuItem item( nullptr, aId, aText, aTooltip, wxITEM_NORMAL );
if( aIcon != BITMAPS::INVALID_BITMAP )
if( !!aIcon )
AddBitmapToMenuItem( &item, KiBitmap( aIcon ) );
addEntry( ENTRY( item, aIcon, aCondition, aOrder, false ) );
@ -79,7 +79,7 @@ void CONDITIONAL_MENU::AddCheckItem( int aId, const wxString& aText, const wxStr
{
wxMenuItem item( nullptr, aId, aText, aTooltip, wxITEM_CHECK );
if( aIcon != BITMAPS::INVALID_BITMAP )
if( !!aIcon )
AddBitmapToMenuItem( &item, KiBitmap( aIcon ) );
addEntry( ENTRY( item, aIcon, aCondition, aOrder, true ) );
@ -160,7 +160,7 @@ void CONDITIONAL_MENU::Evaluate( SELECTION& aSelection )
entry.wxItem()->GetHelp(),
entry.wxItem()->GetKind() );
if( entry.GetIcon() != BITMAPS::INVALID_BITMAP )
if( !!entry.GetIcon() )
AddBitmapToMenuItem( menuItem, KiBitmap( entry.GetIcon() ) );
// the wxMenuItem must be append only after the bitmap is set:

View File

@ -180,7 +180,7 @@ void PANEL_SETUP_PINMAP::setDRCMatrixButtonState( wxBitmapButton *aButton, PIN_E
break;
}
if( bitmap_butt != BITMAPS::INVALID_BITMAP )
if( !!bitmap_butt )
{
aButton->SetBitmap( KiBitmap( bitmap_butt ) );
aButton->SetToolTip( tooltip );

View File

@ -0,0 +1,44 @@
/*
* This program source code file is part of KiCad, a free EDA CAD application.
*
* Copyright (C) 2021 KiCad Developers, see AUTHORS.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 3 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, see <http://www.gnu.org/licenses/>.
*/
/**
* This file is auto-generated by CMake when MAINTAIN_PNGS is on. Do not edit by hand!
*/
#ifndef KICAD_BITMAP_INFO_H
#define KICAD_BITMAP_INFO_H
#include <vector>
#include <bitmaps/bitmaps_list.h>
struct BITMAP_INFO
{
BITMAPS id;
wxString filename;
int height;
wxString theme;
};
const std::vector<BITMAP_INFO> g_BitmapInfo = {
${BITMAP_INFO_LIST}
};
#endif // KICAD_BITMAP_INFO_H

View File

@ -561,4 +561,7 @@ enum class BITMAPS : unsigned int
sim_add_signal
};
inline bool operator!( const BITMAPS& aBitmap ) { return aBitmap == BITMAPS::INVALID_BITMAP; }
#endif // BITMAPS_PNG_BITMAPS_LIST__H