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.) | |
const wxMemoryBuffer & | GetImageDataBuffer () const |
void | UpdateImageDataBuffer () |
Resets the image data buffer using the current image data. | |
Private Member Functions | |
void | rebuildBitmap (bool aResetID=true) |
void | updatePPI () |
Private Attributes | |
double | m_scale |
wxMemoryBuffer | m_imageData |
wxBitmapType | m_imageType |
wxImage * | m_image |
wxImage * | m_originalImage |
wxBitmap * | m_bitmap |
double | m_pixelSizeIu |
int | m_ppi |
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 40 of file bitmap_base.cpp.
References ANGLE_0, m_bitmap, m_image, m_imageType, m_isMirroredX, m_isMirroredY, m_originalImage, m_pixelSizeIu, m_ppi, m_rotation, and m_scale.
BITMAP_BASE::BITMAP_BASE | ( | const BITMAP_BASE & | aSchBitmap | ) |
Definition at line 56 of file bitmap_base.cpp.
References m_bitmap, 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 463 of file bitmap_base.cpp.
References m_image, m_originalImage, rebuildBitmap(), and UpdateImageDataBuffer().
void BITMAP_BASE::DrawBitmap | ( | wxDC * | aDC, |
const VECTOR2I & | aPos, | ||
const KIGFX::COLOR4D & | aBackgroundColor = KIGFX::COLOR4D::UNSPECIFIED |
||
) | const |
Definition at line 275 of file bitmap_base.cpp.
References GetGRForceBlackPenState(), GetScalingFactor(), GetSize(), image, KiROUND(), m_bitmap, scale, KIGFX::COLOR4D::ToColour(), VECTOR2< T >::x, and VECTOR2< T >::y.
Referenced by SCH_BITMAP::Print(), and DS_DRAW_ITEM_BITMAP::PrintWsItem().
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 264 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(), KIGFX::CAIRO_GAL_BASE::DrawBitmap(), PCB_IO_KICAD_SEXPR::format(), SCH_IO_KICAD_LEGACY::saveBitmap(), and SCH_IO_KICAD_SEXPR::saveBitmap().
|
inline |
Definition at line 69 of file bitmap_base.h.
References m_image.
|
inline |
Definition at line 246 of file bitmap_base.h.
References m_imageData.
Referenced by PCB_IO_KICAD_SEXPR::format(), DS_DATA_MODEL_IO::format(), and SCH_IO_KICAD_SEXPR::saveBitmap().
|
inline |
Definition at line 76 of file bitmap_base.h.
References m_imageId.
Referenced by KIGFX::GL_BITMAP_CACHE::cacheBitmap(), and KIGFX::GL_BITMAP_CACHE::RequestBitmap().
|
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(), DS_DATA_MODEL_IO::format(), and DS_DATA_ITEM_BITMAP::SyncDrawItems().
|
inline |
Definition at line 65 of file bitmap_base.h.
References m_pixelSizeIu.
Referenced by BOOST_AUTO_TEST_CASE().
|
inline |
Definition at line 118 of file bitmap_base.h.
References m_ppi.
Referenced by BOOST_AUTO_TEST_CASE(), KIGFX::CAIRO_GAL_BASE::DrawBitmap(), KIGFX::OPENGL_GAL::DrawBitmap(), SCH_BITMAP::GetMsgPanelInfo(), PCB_REFERENCE_IMAGE::GetMsgPanelInfo(), DS_DATA_ITEM_BITMAP::GetPPI(), SCH_IO_KICAD_LEGACY::loadBitmap(), SCH_IO_KICAD_SEXPR_PARSER::parseImage(), PL_EDITOR_FRAME::PrintPage(), PLEDITOR_PRINTOUT::PrintPage(), SCH_IO_KICAD_SEXPR::saveBitmap(), DS_DATA_ITEM_BITMAP::SetPPI(), and DS_DATA_ITEM_BITMAP::SyncDrawItems().
|
inline |
Definition at line 73 of file bitmap_base.h.
References m_scale.
Referenced by BOOST_AUTO_TEST_CASE(), DS_DATA_MODEL_IO::format(), and DS_DATA_ITEM_BITMAP::GetPPI().
|
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 392 of file bitmap_base.cpp.
References GetScalingFactor(), KiROUND(), m_bitmap, VECTOR2< T >::x, and VECTOR2< T >::y.
Referenced by BOOST_AUTO_TEST_CASE(), DrawBitmap(), GetBoundingBox(), DS_DRAW_ITEM_BITMAP::GetBoundingBox(), SCH_BITMAP::GetHeight(), PCB_REFERENCE_IMAGE::GetHeight(), SCH_BITMAP::GetWidth(), and PCB_REFERENCE_IMAGE::GetWidth().
|
inline |
Definition at line 107 of file bitmap_base.h.
References m_image.
Referenced by BOOST_AUTO_TEST_CASE(), BOOST_FIXTURE_TEST_CASE(), 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 110 of file bitmap_base.cpp.
References m_bitmap, m_image, m_imageData, m_imageId, m_imageType, m_isMirroredX, m_isMirroredY, m_originalImage, m_pixelSizeIu, m_ppi, m_rotation, and m_scale.
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 216 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 409 of file bitmap_base.cpp.
References m_image, m_isMirroredX, m_isMirroredY, rebuildBitmap(), and UpdateImageDataBuffer().
Referenced by PCB_IO_EASYEDAPRO_PARSER::ParseBoard().
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 475 of file bitmap_base.cpp.
References GetScalingFactor(), m_image, PLOTTER::PlotImage(), PLOTTER::SetColor(), and PLOTTER::SetCurrentLineWidth().
Referenced by SCH_BITMAP::Plot(), and 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 163 of file bitmap_base.cpp.
References ReadImageFile().
Referenced by DRAWING_SHEET_PARSER::parseBitmap(), ReadImageFile(), and TEST_BITMAP_BASE_FIXTURE::TEST_BITMAP_BASE_FIXTURE().
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 127 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 146 of file bitmap_base.cpp.
References m_imageData, and SetImage().
|
private |
Definition at line 82 of file bitmap_base.cpp.
References m_bitmap, m_image, and m_imageId.
Referenced by ConvertToGreyscale(), Mirror(), Rotate(), 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 438 of file bitmap_base.cpp.
References ANGLE_90, m_image, m_rotation, rebuildBitmap(), and UpdateImageDataBuffer().
|
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 194 of file bitmap_base.cpp.
References m_image, m_imageData, and m_imageType.
bool BITMAP_BASE::SetImage | ( | const wxImage & | aImage | ) |
Set the image from an existing wxImage.
Definition at line 175 of file bitmap_base.cpp.
References m_image, m_originalImage, rebuildBitmap(), and updatePPI().
Referenced by 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 PL_EDITOR_FRAME::PrintPage(), PLEDITOR_PRINTOUT::PrintPage(), DS_DATA_ITEM_BITMAP::SyncDrawItems(), and TEST_BITMAP_BASE_FIXTURE::TEST_BITMAP_BASE_FIXTURE().
|
inline |
Definition at line 74 of file bitmap_base.h.
References m_scale.
Referenced by DRAWING_SHEET_PARSER::parseBitmap(), DS_DATA_ITEM_BITMAP::SetPPI(), and TEST_BITMAP_BASE_FIXTURE::TEST_BITMAP_BASE_FIXTURE().
void BITMAP_BASE::UpdateImageDataBuffer | ( | ) |
Resets the image data buffer using the current image data.
Definition at line 490 of file bitmap_base.cpp.
References m_image, m_imageData, and m_imageType.
Referenced by ConvertToGreyscale(), LoadLegacyData(), Mirror(), and Rotate().
|
private |
Definition at line 95 of file bitmap_base.cpp.
References KiROUND(), m_originalImage, and m_ppi.
Referenced by SetImage().
|
private |
Definition at line 272 of file bitmap_base.h.
Referenced by BITMAP_BASE(), DrawBitmap(), GetSize(), ImportData(), LoadLegacyData(), rebuildBitmap(), and ~BITMAP_BASE().
|
private |
Definition at line 270 of file bitmap_base.h.
Referenced by BITMAP_BASE(), ConvertToGreyscale(), GetImageData(), GetSizePixels(), ImportData(), LoadLegacyData(), Mirror(), PlotImage(), rebuildBitmap(), Rotate(), SaveImageData(), SetImage(), UpdateImageDataBuffer(), and ~BITMAP_BASE().
|
private |
Definition at line 267 of file bitmap_base.h.
Referenced by BITMAP_BASE(), GetImageDataBuffer(), ImportData(), ReadImageFile(), SaveImageData(), and UpdateImageDataBuffer().
|
private |
Definition at line 278 of file bitmap_base.h.
Referenced by BITMAP_BASE(), GetImageID(), ImportData(), and rebuildBitmap().
|
private |
Definition at line 268 of file bitmap_base.h.
Referenced by BITMAP_BASE(), GetImageType(), ImportData(), SaveImageData(), SetImageType(), and UpdateImageDataBuffer().
|
private |
Definition at line 279 of file bitmap_base.h.
Referenced by BITMAP_BASE(), ImportData(), IsMirroredX(), and Mirror().
|
private |
Definition at line 280 of file bitmap_base.h.
Referenced by BITMAP_BASE(), ImportData(), IsMirroredY(), and Mirror().
|
private |
Definition at line 271 of file bitmap_base.h.
Referenced by BITMAP_BASE(), ConvertToGreyscale(), GetOriginalImageData(), ImportData(), LoadLegacyData(), SetImage(), updatePPI(), and ~BITMAP_BASE().
|
private |
Definition at line 273 of file bitmap_base.h.
Referenced by BITMAP_BASE(), GetPixelSizeIu(), GetScalingFactor(), ImportData(), and SetPixelSizeIu().
|
private |
Definition at line 277 of file bitmap_base.h.
Referenced by BITMAP_BASE(), GetPPI(), ImportData(), and updatePPI().
|
private |
Definition at line 281 of file bitmap_base.h.
Referenced by BITMAP_BASE(), ImportData(), Rotate(), and Rotation().
|
private |
Definition at line 265 of file bitmap_base.h.
Referenced by BITMAP_BASE(), GetScale(), GetScalingFactor(), ImportData(), and SetScale().