|
KiCad PCB EDA Suite
|
This class handle bitmap images in KiCad. More...
#include <bitmap_base.h>
Public Member Functions | |
| BITMAP_BASE (const VECTOR2I &pos=VECTOR2I(0, 0)) | |
| BITMAP_BASE (const BITMAP_BASE &aSchBitmap) | |
| ~BITMAP_BASE () | |
| double | GetPixelSizeIu () const |
| void | SetPixelSizeIu (double aPixSize) |
| wxImage * | GetImageData () |
| const wxImage * | GetImageData () const |
| const wxImage * | GetOriginalImageData () const |
| double | GetScale () const |
| void | SetScale (double aScale) |
| KIID | GetImageID () const |
| void | ImportData (BITMAP_BASE &aItem) |
| Copy aItem image to this object and update m_bitmap. | |
| double | GetScalingFactor () const |
| This scaling factor depends on m_pixelSizeIu and m_scale. | |
| VECTOR2I | GetSize () const |
| VECTOR2I | GetSizePixels () const |
| int | GetPPI () const |
| const BOX2I | GetBoundingBox () const |
| Return the orthogonal, bounding box of this object for display purposes. | |
| void | DrawBitmap (wxDC *aDC, const VECTOR2I &aPos, const KIGFX::COLOR4D &aBackgroundColor=KIGFX::COLOR4D::UNSPECIFIED) const |
| bool | ReadImageFile (const wxString &aFullFilename) |
| Reads and stores in memory an image file. | |
| bool | ReadImageFile (wxInputStream &aInStream) |
| Reads and stores in memory an image file. | |
| bool | ReadImageFile (wxMemoryBuffer &aBuf) |
| Reads and stores in memory an image file. | |
| bool | SetImage (const wxImage &aImage) |
| Set the image from an existing wxImage. | |
| bool | SaveImageData (wxOutputStream &aOutStream) const |
| Write the bitmap data to aOutStream. | |
| bool | LoadLegacyData (LINE_READER &aLine, wxString &aErrorMsg) |
| Load an image data saved by #SaveData. | |
| void | Mirror (FLIP_DIRECTION aFlipDirection) |
| Mirror image vertically (i.e. | |
| void | Rotate (bool aRotateCCW) |
| Rotate image CW or CCW. | |
| void | ConvertToGreyscale () |
| bool | IsMirroredX () const |
| bool | IsMirroredY () const |
| EDA_ANGLE | Rotation () const |
| void | PlotImage (PLOTTER *aPlotter, const VECTOR2I &aPos, const KIGFX::COLOR4D &aDefaultColor, int aDefaultPensize) const |
| Plot bitmap on plotter. | |
| wxBitmapType | GetImageType () const |
| Return the bitmap type (png, jpeg, etc.) | |
| void | SetImageType (wxBitmapType aType) |
| Set the bitmap type (png, jpeg, etc.) | |
Private Member Functions | |
| void | updateImageDataBuffer () |
| Resets the image data buffer using the current image data. | |
| void | rebuildBitmap (bool aResetID=true) |
| Rebuild the internal bitmap used to draw/plot image. | |
| void | ensureBitmapUpToDate () const |
| Ensure the cached wxBitmap is up-to-date with the current wxImage. | |
| void | updatePPI () |
Static Private Member Functions | |
| static void | mirrorImageInPlace (wxImage &aImage, FLIP_DIRECTION aFlipDirection) |
| Mirror the wxImage pixel data in-place without allocating a new image. | |
Private Attributes | |
| double | m_scale |
| The scaling factor of the bitmap with m_pixelSizeIu, controls the actual draw size. | |
| wxMemoryBuffer | m_imageData |
| Cached encoded image data (PNG/JPEG). | |
| wxBitmapType | m_imageType |
| The image type (png, jpeg, etc.). | |
| wxImage * | m_image |
| The raw, uncompressed image data. | |
| wxImage * | m_originalImage |
| Raw image data, not transformed by rotate/mirror. | |
| wxBitmap * | m_bitmap |
| The bitmap used to draw/plot image. | |
| bool | m_bitmapDirty |
| True when m_bitmap needs rebuilding from m_image. | |
| double | m_pixelSizeIu |
| The scaling factor of the bitmap to convert the bitmap size (in pixels) to internal KiCad units. | |
| int | m_ppi |
| The bitmap definition. The default is 300PPI. | |
| KIID | m_imageId |
| bool | m_isMirroredX |
| bool | m_isMirroredY |
| EDA_ANGLE | m_rotation |
This class handle bitmap images in KiCad.
It is not intended to be used alone, but inside another class so all methods are protected or private. It is used in SCH_BITMAP class, DS_DRAW_ITEM_BITMAP, and possibly others in the future.
Definition at line 48 of file bitmap_base.h.
Definition at line 42 of file bitmap_base.cpp.
References ANGLE_0, m_bitmap, m_bitmapDirty, m_image, m_imageType, m_isMirroredX, m_isMirroredY, m_originalImage, m_pixelSizeIu, m_ppi, m_rotation, and m_scale.
Referenced by BITMAP_BASE(), and ImportData().
| BITMAP_BASE::BITMAP_BASE | ( | const BITMAP_BASE & | aSchBitmap | ) |
Definition at line 59 of file bitmap_base.cpp.
References BITMAP_BASE(), m_bitmap, m_bitmapDirty, m_image, m_imageData, m_imageId, m_imageType, m_isMirroredX, m_isMirroredY, m_originalImage, m_pixelSizeIu, m_ppi, m_rotation, and m_scale.
|
inline |
Definition at line 55 of file bitmap_base.h.
References m_bitmap, m_image, and m_originalImage.
| void BITMAP_BASE::ConvertToGreyscale | ( | ) |
Definition at line 537 of file bitmap_base.cpp.
References m_bitmapDirty, m_image, m_imageData, m_imageId, and m_originalImage.
| void BITMAP_BASE::DrawBitmap | ( | wxDC * | aDC, |
| const VECTOR2I & | aPos, | ||
| const KIGFX::COLOR4D & | aBackgroundColor = KIGFX::COLOR4D::UNSPECIFIED ) const |
Definition at line 296 of file bitmap_base.cpp.
References ensureBitmapUpToDate(), GetGRForceBlackPenState(), GetScalingFactor(), GetSize(), image, KiROUND(), m_bitmap, result, scale, KIGFX::COLOR4D::ToColour(), COLOR4D::UNSPECIFIED, VECTOR2< T >::x, and VECTOR2< T >::y.
Referenced by DS_DRAW_ITEM_BITMAP::PrintWsItem().
|
private |
Ensure the cached wxBitmap is up-to-date with the current wxImage.
Rebuilds the bitmap if it has been invalidated by a transform operation.
Definition at line 100 of file bitmap_base.cpp.
References m_bitmap, m_bitmapDirty, and m_image.
Referenced by DrawBitmap().
| const BOX2I BITMAP_BASE::GetBoundingBox | ( | ) | const |
Return the orthogonal, bounding box of this object for display purposes.
This box should be an enclosing perimeter for visible components of this object, and the units should be in the pcb or schematic coordinate system. It is OK to overestimate the size by a few counts.
Definition at line 285 of file bitmap_base.cpp.
References GetSize(), BOX2< Vec >::Inflate(), VECTOR2< T >::x, and VECTOR2< T >::y.
Referenced by BOOST_AUTO_TEST_CASE().
|
inline |
Definition at line 68 of file bitmap_base.h.
References m_image.
Referenced by BOOST_AUTO_TEST_CASE(), BOOST_AUTO_TEST_CASE(), KIGFX::CAIRO_GAL_BASE::DrawBitmap(), PCB_IO_KICAD_SEXPR::format(), REFERENCE_IMAGE::operator==(), SCH_IO_KICAD_LEGACY::saveBitmap(), SCH_IO_KICAD_SEXPR::saveBitmap(), and REFERENCE_IMAGE::Similarity().
|
inline |
Definition at line 69 of file bitmap_base.h.
References m_image.
|
inline |
Definition at line 76 of file bitmap_base.h.
References m_imageId.
Referenced by KIGFX::GL_BITMAP_CACHE::cacheBitmap(), REFERENCE_IMAGE::operator==(), KIGFX::GL_BITMAP_CACHE::RequestBitmap(), and REFERENCE_IMAGE::Similarity().
|
inline |
Return the bitmap type (png, jpeg, etc.)
Definition at line 236 of file bitmap_base.h.
References m_imageType.
|
inline |
Definition at line 71 of file bitmap_base.h.
References m_originalImage.
Referenced by KIGFX::GL_BITMAP_CACHE::cacheBitmap(), and DS_DATA_MODEL_IO::format().
|
inline |
Definition at line 65 of file bitmap_base.h.
References m_pixelSizeIu.
Referenced by BOOST_AUTO_TEST_CASE(), and BOOST_AUTO_TEST_CASE().
|
inline |
Definition at line 118 of file bitmap_base.h.
References m_ppi.
Referenced by BOOST_AUTO_TEST_CASE(), BOOST_AUTO_TEST_CASE(), KIGFX::CAIRO_GAL_BASE::DrawBitmap(), KIGFX::OPENGL_GAL::DrawBitmap(), SCH_IO_KICAD_LEGACY::loadBitmap(), REFERENCE_IMAGE::operator==(), SCH_IO_KICAD_SEXPR_PARSER::parseImage(), PLEDITOR_PRINTOUT::PrintPage(), SCH_IO_KICAD_SEXPR::saveBitmap(), and REFERENCE_IMAGE::Similarity().
|
inline |
Definition at line 73 of file bitmap_base.h.
References m_scale.
Referenced by BOOST_AUTO_TEST_CASE(), BOOST_AUTO_TEST_CASE(), DS_DATA_MODEL_IO::format(), REFERENCE_IMAGE::operator==(), and REFERENCE_IMAGE::Similarity().
|
inline |
This scaling factor depends on m_pixelSizeIu and m_scale.
m_pixelSizeIu gives the scaling factor between a pixel size and the internal units. m_scale is an user dependent value, and gives the "zoom" value.
Definition at line 94 of file bitmap_base.h.
References m_pixelSizeIu, and m_scale.
Referenced by DrawBitmap(), GetSize(), and PlotImage().
| VECTOR2I BITMAP_BASE::GetSize | ( | ) | const |
Definition at line 416 of file bitmap_base.cpp.
References GetScalingFactor(), KiROUND(), m_image, VECTOR2< T >::x, and VECTOR2< T >::y.
Referenced by BOOST_AUTO_TEST_CASE(), DrawBitmap(), GetBoundingBox(), DS_DRAW_ITEM_BITMAP::GetBoundingBox(), REFERENCE_IMAGE::operator==(), and REFERENCE_IMAGE::Similarity().
|
inline |
Definition at line 107 of file bitmap_base.h.
References m_image.
Referenced by BOOST_AUTO_TEST_CASE(), BOOST_DATA_TEST_CASE_F(), KIGFX::CAIRO_GAL_BASE::DrawBitmap(), and KIGFX::OPENGL_GAL::DrawBitmap().
| void BITMAP_BASE::ImportData | ( | BITMAP_BASE & | aItem | ) |
Copy aItem image to this object and update m_bitmap.
Definition at line 128 of file bitmap_base.cpp.
References BITMAP_BASE(), m_image, m_imageData, m_imageId, m_imageType, m_isMirroredX, m_isMirroredY, m_originalImage, m_pixelSizeIu, m_ppi, m_rotation, m_scale, and rebuildBitmap().
Referenced by PANEL_IMAGE_EDITOR::TransferToImage().
|
inline |
Definition at line 216 of file bitmap_base.h.
References m_isMirroredX.
Referenced by KIGFX::OPENGL_GAL::DrawBitmap().
|
inline |
Definition at line 217 of file bitmap_base.h.
References m_isMirroredY.
Referenced by KIGFX::OPENGL_GAL::DrawBitmap().
| bool BITMAP_BASE::LoadLegacyData | ( | LINE_READER & | aLine, |
| wxString & | aErrorMsg ) |
Load an image data saved by #SaveData.
The file format must be png format in hexadecimal.
| aLine | the LINE_READER used to read the data file. |
| aErrorMsg | Description of the error if an error occurs while loading the png bitmap data. |
Definition at line 237 of file bitmap_base.cpp.
References LINE_READER::Line(), m_bitmap, m_image, m_originalImage, LINE_READER::ReadLine(), and updateImageDataBuffer().
Referenced by DRAWING_SHEET_PARSER::readPngdata().
| void BITMAP_BASE::Mirror | ( | FLIP_DIRECTION | aFlipDirection | ) |
Mirror image vertically (i.e.
relative to its horizontal X axis ) or horizontally (i.e relative to its vertical Y axis).
| aFlipDirection | the direction to flip the image. |
Definition at line 497 of file bitmap_base.cpp.
References m_bitmapDirty, m_image, m_imageData, m_isMirroredX, m_isMirroredY, mirrorImageInPlace(), and TOP_BOTTOM.
Referenced by PCB_IO_EASYEDAPRO_PARSER::ParseBoard().
|
staticprivate |
Mirror the wxImage pixel data in-place without allocating a new image.
Definition at line 430 of file bitmap_base.cpp.
References LEFT_RIGHT.
Referenced by Mirror().
| void BITMAP_BASE::PlotImage | ( | PLOTTER * | aPlotter, |
| const VECTOR2I & | aPos, | ||
| const KIGFX::COLOR4D & | aDefaultColor, | ||
| int | aDefaultPensize ) const |
Plot bitmap on plotter.
If the plotter does not support bitmaps, plot a
| aPlotter | the plotter to use. |
| aPos | the position of the center of the bitmap. |
| aDefaultColor | the color used to plot the rectangle when bitmap is not supported. |
| aDefaultPensize | the pen size used to plot the rectangle when bitmap is not supported. |
Definition at line 550 of file bitmap_base.cpp.
References GetScalingFactor(), m_image, PLOTTER::PlotImage(), PLOTTER::SetColor(), and PLOTTER::SetCurrentLineWidth().
Referenced by PlotDrawingSheet().
| bool BITMAP_BASE::ReadImageFile | ( | const wxString & | aFullFilename | ) |
Reads and stores in memory an image file.
Initialize the bitmap format used to draw this item. Supported images formats are format supported by wxImage if all handlers are loaded. By default, .png, .jpeg are always loaded.
| aFullFilename | The full filename of the image file to read. |
Definition at line 182 of file bitmap_base.cpp.
References ReadImageFile().
Referenced by DRAWING_SHEET_PARSER::parseBitmap(), and ReadImageFile().
| bool BITMAP_BASE::ReadImageFile | ( | wxInputStream & | aInStream | ) |
Reads and stores in memory an image file.
Initialize the bitmap format used to draw this item.
Supported images formats are format supported by wxImage if all handlers are loaded. By default, .png, .jpeg are always loaded.
| aInStream | an input stream containing the file data. |
Definition at line 146 of file bitmap_base.cpp.
References m_imageData, and SetImage().
| bool BITMAP_BASE::ReadImageFile | ( | wxMemoryBuffer & | aBuf | ) |
Reads and stores in memory an image file.
Initialize the bitmap format used to draw this item.
Supported images formats are format supported by wxImage if all handlers are loaded. By default, .png, .jpeg are always loaded.
| aBuf | a memory buffer containing the file data. |
Definition at line 165 of file bitmap_base.cpp.
References m_imageData, and SetImage().
|
private |
Rebuild the internal bitmap used to draw/plot image.
This must be called after a m_image change.
| aResetID | is used to reset the cache ID used for OpenGL rendering. |
Definition at line 86 of file bitmap_base.cpp.
References m_bitmap, m_bitmapDirty, m_image, and m_imageId.
Referenced by ImportData(), and SetImage().
| void BITMAP_BASE::Rotate | ( | bool | aRotateCCW | ) |
Rotate image CW or CCW.
| aRotateCCW | true to rotate CCW or false to rotate CW. |
Definition at line 514 of file bitmap_base.cpp.
References ANGLE_90, m_bitmapDirty, m_image, m_imageData, and m_rotation.
|
inline |
Definition at line 218 of file bitmap_base.h.
References m_rotation.
Referenced by KIGFX::OPENGL_GAL::DrawBitmap().
| bool BITMAP_BASE::SaveImageData | ( | wxOutputStream & | aOutStream | ) | const |
Write the bitmap data to aOutStream.
This writes binary data, not hexadecimal strings
| aOutStream | The output stream to write to. |
Definition at line 213 of file bitmap_base.cpp.
References m_image, m_imageData, and m_imageType.
Referenced by BOOST_AUTO_TEST_CASE(), DS_DATA_MODEL_IO::format(), PCB_IO_KICAD_SEXPR::format(), and SCH_IO_KICAD_SEXPR::saveBitmap().
| bool BITMAP_BASE::SetImage | ( | const wxImage & | aImage | ) |
Set the image from an existing wxImage.
Definition at line 194 of file bitmap_base.cpp.
References m_image, m_originalImage, rebuildBitmap(), and updatePPI().
Referenced by BOOST_AUTO_TEST_CASE(), ReadImageFile(), and ReadImageFile().
|
inline |
Set the bitmap type (png, jpeg, etc.)
Definition at line 241 of file bitmap_base.h.
References m_imageType.
|
inline |
Definition at line 66 of file bitmap_base.h.
References m_pixelSizeIu.
Referenced by PLEDITOR_PRINTOUT::PrintPage().
|
inline |
Definition at line 74 of file bitmap_base.h.
References m_scale.
Referenced by DRAWING_SHEET_PARSER::parseBitmap().
|
private |
Resets the image data buffer using the current image data.
Definition at line 565 of file bitmap_base.cpp.
References m_image, m_imageData, and m_imageType.
Referenced by LoadLegacyData().
|
private |
Definition at line 113 of file bitmap_base.cpp.
References KiROUND(), m_originalImage, and m_ppi.
Referenced by SetImage().
|
mutableprivate |
The bitmap used to draw/plot image.
Definition at line 278 of file bitmap_base.h.
Referenced by BITMAP_BASE(), BITMAP_BASE(), DrawBitmap(), ensureBitmapUpToDate(), LoadLegacyData(), rebuildBitmap(), and ~BITMAP_BASE().
|
mutableprivate |
True when m_bitmap needs rebuilding from m_image.
Definition at line 279 of file bitmap_base.h.
Referenced by BITMAP_BASE(), BITMAP_BASE(), ConvertToGreyscale(), ensureBitmapUpToDate(), Mirror(), rebuildBitmap(), and Rotate().
|
private |
The raw, uncompressed image data.
Definition at line 276 of file bitmap_base.h.
Referenced by BITMAP_BASE(), BITMAP_BASE(), ConvertToGreyscale(), ensureBitmapUpToDate(), GetImageData(), GetImageData(), GetSize(), GetSizePixels(), ImportData(), LoadLegacyData(), Mirror(), PlotImage(), rebuildBitmap(), Rotate(), SaveImageData(), SetImage(), updateImageDataBuffer(), and ~BITMAP_BASE().
|
mutableprivate |
Cached encoded image data (PNG/JPEG).
Definition at line 273 of file bitmap_base.h.
Referenced by BITMAP_BASE(), ConvertToGreyscale(), ImportData(), Mirror(), ReadImageFile(), ReadImageFile(), Rotate(), SaveImageData(), and updateImageDataBuffer().
|
private |
Definition at line 284 of file bitmap_base.h.
Referenced by BITMAP_BASE(), ConvertToGreyscale(), GetImageID(), ImportData(), and rebuildBitmap().
|
private |
The image type (png, jpeg, etc.).
Definition at line 274 of file bitmap_base.h.
Referenced by BITMAP_BASE(), BITMAP_BASE(), GetImageType(), ImportData(), SaveImageData(), SetImageType(), and updateImageDataBuffer().
|
private |
Definition at line 285 of file bitmap_base.h.
Referenced by BITMAP_BASE(), BITMAP_BASE(), ImportData(), IsMirroredX(), and Mirror().
|
private |
Definition at line 286 of file bitmap_base.h.
Referenced by BITMAP_BASE(), BITMAP_BASE(), ImportData(), IsMirroredY(), and Mirror().
|
private |
Raw image data, not transformed by rotate/mirror.
Definition at line 277 of file bitmap_base.h.
Referenced by BITMAP_BASE(), BITMAP_BASE(), ConvertToGreyscale(), GetOriginalImageData(), ImportData(), LoadLegacyData(), SetImage(), updatePPI(), and ~BITMAP_BASE().
|
private |
The scaling factor of the bitmap to convert the bitmap size (in pixels) to internal KiCad units.
This usually does not change.
Definition at line 280 of file bitmap_base.h.
Referenced by BITMAP_BASE(), BITMAP_BASE(), GetPixelSizeIu(), GetScalingFactor(), ImportData(), and SetPixelSizeIu().
|
private |
The bitmap definition. The default is 300PPI.
Definition at line 283 of file bitmap_base.h.
Referenced by BITMAP_BASE(), BITMAP_BASE(), GetPPI(), ImportData(), and updatePPI().
|
private |
Definition at line 287 of file bitmap_base.h.
Referenced by BITMAP_BASE(), BITMAP_BASE(), ImportData(), Rotate(), and Rotation().
|
private |
The scaling factor of the bitmap with m_pixelSizeIu, controls the actual draw size.
Definition at line 271 of file bitmap_base.h.
Referenced by BITMAP_BASE(), BITMAP_BASE(), GetScale(), GetScalingFactor(), ImportData(), and SetScale().