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 |
void | SetImage (wxImage *aImage) |
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. More... | |
double | GetScalingFactor () const |
This scaling factor depends on m_pixelSizeIu and m_scale. More... | |
VECTOR2I | GetSize () const |
VECTOR2I | GetSizePixels () const |
int | GetPPI () const |
const BOX2I | GetBoundingBox () const |
Return the orthogonal, bounding box of this object for display purposes. More... | |
void | DrawBitmap (wxDC *aDC, const VECTOR2I &aPos) |
bool | ReadImageFile (const wxString &aFullFilename) |
Reads and stores in memory an image file. More... | |
bool | ReadImageFile (wxInputStream &aInStream) |
Reads and stores in memory an image file. More... | |
bool | SaveData (FILE *aFile) const |
Write the bitmap data to aFile. More... | |
void | SaveData (wxArrayString &aPngStrings) const |
Write the bitmap data to an array string. More... | |
bool | LoadData (LINE_READER &aLine, wxString &aErrorMsg) |
Load an image data saved by SaveData. More... | |
void | Mirror (bool aVertically) |
Mirror image vertically (i.e. More... | |
void | Rotate (bool aRotateCCW) |
Rotate image CW or CCW. More... | |
void | ConvertToGreyscale () |
bool | IsMirrored () const |
EDA_ANGLE | Rotation () const |
void | PlotImage (PLOTTER *aPlotter, const VECTOR2I &aPos, const KIGFX::COLOR4D &aDefaultColor, int aDefaultPensize) const |
Plot bitmap on plotter. More... | |
Private Member Functions | |
void | rebuildBitmap (bool aResetID=true) |
void | updatePPI () |
Private Attributes | |
double | m_scale |
wxImage * | m_image |
wxImage * | m_originalImage |
wxBitmap * | m_bitmap |
double | m_pixelSizeIu |
int | m_ppi |
KIID | m_imageId |
bool | m_isMirrored |
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 51 of file bitmap_base.h.
Definition at line 35 of file bitmap_base.cpp.
References ANGLE_0, m_bitmap, m_image, m_isMirrored, m_originalImage, m_pixelSizeIu, m_ppi, m_rotation, and m_scale.
BITMAP_BASE::BITMAP_BASE | ( | const BITMAP_BASE & | aSchBitmap | ) |
Definition at line 49 of file bitmap_base.cpp.
References m_bitmap, m_image, m_imageId, m_isMirrored, m_originalImage, m_pixelSizeIu, m_ppi, m_rotation, and m_scale.
|
inline |
Definition at line 58 of file bitmap_base.h.
References m_bitmap, m_image, and m_originalImage.
void BITMAP_BASE::ConvertToGreyscale | ( | ) |
Definition at line 421 of file bitmap_base.cpp.
References m_image, m_originalImage, and rebuildBitmap().
Referenced by PANEL_IMAGE_EDITOR::OnGreyScaleConvert().
void BITMAP_BASE::DrawBitmap | ( | wxDC * | aDC, |
const VECTOR2I & | aPos | ||
) |
Definition at line 281 of file bitmap_base.cpp.
References GetGRForceBlackPenState(), GetScalingFactor(), GetSize(), KiROUND(), m_bitmap, scale, VECTOR2< T >::x, and VECTOR2< T >::y.
Referenced by PANEL_IMAGE_EDITOR::OnRedrawPanel(), 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 270 of file bitmap_base.cpp.
References GetSize(), BOX2< Vec >::Inflate(), VECTOR2< T >::x, and VECTOR2< T >::y.
Referenced by BOOST_AUTO_TEST_CASE(), and SCH_BITMAP::GetBoundingBox().
|
inline |
Definition at line 71 of file bitmap_base.h.
References m_image.
Referenced by BOOST_AUTO_TEST_CASE(), KIGFX::CAIRO_GAL_BASE::DrawBitmap(), PCB_PLUGIN::format(), SCH_LEGACY_PLUGIN::saveBitmap(), and SCH_SEXPR_PLUGIN::saveBitmap().
|
inline |
|
inline |
Definition at line 81 of file bitmap_base.h.
References m_imageId.
Referenced by KIGFX::GL_BITMAP_CACHE::cacheBitmap(), and KIGFX::GL_BITMAP_CACHE::RequestBitmap().
|
inline |
Definition at line 74 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 68 of file bitmap_base.h.
References m_pixelSizeIu.
Referenced by BOOST_AUTO_TEST_CASE().
|
inline |
Definition at line 123 of file bitmap_base.h.
References m_ppi.
Referenced by BOOST_AUTO_TEST_CASE(), KIGFX::CAIRO_GAL_BASE::DrawBitmap(), KIGFX::OPENGL_GAL::DrawBitmap(), DS_DATA_ITEM_BITMAP::GetPPI(), SCH_LEGACY_PLUGIN::loadBitmap(), PCB_BITMAP::operator=(), PCB_BITMAP::PCB_BITMAP(), PL_EDITOR_FRAME::PrintPage(), PLEDITOR_PRINTOUT::PrintPage(), SCH_BITMAP::ReadImageFile(), PCB_BITMAP::ReadImageFile(), SCH_SEXPR_PLUGIN::saveBitmap(), SCH_BITMAP::SetImage(), PCB_BITMAP::SetImage(), DS_DATA_ITEM_BITMAP::SetPPI(), and DS_DATA_ITEM_BITMAP::SyncDrawItems().
|
inline |
Definition at line 78 of file bitmap_base.h.
References m_scale.
Referenced by BOOST_AUTO_TEST_CASE(), PCB_PLUGIN::format(), DS_DATA_MODEL_IO::format(), SCH_BITMAP::GetImageScale(), PCB_BITMAP::GetImageScale(), DS_DATA_ITEM_BITMAP::GetPPI(), SCH_LEGACY_PLUGIN::loadBitmap(), PANEL_IMAGE_EDITOR::PANEL_IMAGE_EDITOR(), SCH_LEGACY_PLUGIN::saveBitmap(), and SCH_SEXPR_PLUGIN::saveBitmap().
|
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 99 of file bitmap_base.h.
References m_pixelSizeIu, and m_scale.
Referenced by DrawBitmap(), GetSize(), PANEL_IMAGE_EDITOR::OnRedrawPanel(), and PlotImage().
VECTOR2I BITMAP_BASE::GetSize | ( | ) | const |
Definition at line 382 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(), PCB_BITMAP::GetBoundingBox(), SCH_BITMAP::GetSize(), and PCB_BITMAP::GetSize().
|
inline |
Definition at line 112 of file bitmap_base.h.
References m_image.
Referenced by BOOST_AUTO_TEST_CASE(), PANEL_IMAGE_EDITOR::CheckValues(), 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 109 of file bitmap_base.cpp.
References m_bitmap, m_image, m_imageId, m_isMirrored, m_originalImage, m_pixelSizeIu, m_ppi, m_rotation, and m_scale.
Referenced by PANEL_IMAGE_EDITOR::TransferToImage().
|
inline |
Definition at line 213 of file bitmap_base.h.
References m_isMirrored.
Referenced by KIGFX::OPENGL_GAL::DrawBitmap().
bool BITMAP_BASE::LoadData | ( | 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 223 of file bitmap_base.cpp.
References LINE_READER::Line(), m_bitmap, m_image, m_originalImage, and LINE_READER::ReadLine().
Referenced by DRAWING_SHEET_PARSER::readPngdata().
void BITMAP_BASE::Mirror | ( | bool | aVertically | ) |
Mirror image vertically (i.e.
relative to its horizontal X axis ) or horizontally (i.e relative to its vertical Y axis).
aVertically | false to mirror horizontally or true to mirror vertically. |
Definition at line 399 of file bitmap_base.cpp.
References m_image, m_isMirrored, and rebuildBitmap().
Referenced by PCB_BITMAP::Flip(), SCH_BITMAP::MirrorHorizontally(), and SCH_BITMAP::MirrorVertically().
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 432 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 141 of file bitmap_base.cpp.
References m_image, m_originalImage, rebuildBitmap(), and updatePPI().
Referenced by SCH_BITMAP::ReadImageFile(), PCB_BITMAP::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 123 of file bitmap_base.cpp.
References m_image, m_originalImage, rebuildBitmap(), and updatePPI().
|
private |
Definition at line 82 of file bitmap_base.cpp.
References m_bitmap, m_image, and m_imageId.
Referenced by ConvertToGreyscale(), Mirror(), ReadImageFile(), 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 410 of file bitmap_base.cpp.
References ANGLE_90, m_image, m_rotation, and rebuildBitmap().
Referenced by SCH_BITMAP::Rotate(), and PCB_BITMAP::Rotate().
|
inline |
Definition at line 214 of file bitmap_base.h.
References m_rotation.
Referenced by KIGFX::OPENGL_GAL::DrawBitmap().
bool BITMAP_BASE::SaveData | ( | FILE * | aFile | ) | const |
Write the bitmap data to aFile.
The file format is png, in hexadecimal form. If the hexadecimal data is converted to binary it gives exactly a .png image data.
aFile | The FILE to write to. |
Definition at line 162 of file bitmap_base.cpp.
References m_image.
Referenced by DS_DATA_MODEL_IO::format().
void BITMAP_BASE::SaveData | ( | wxArrayString & | aPngStrings | ) | const |
Write the bitmap data to an array string.
The format is png, in Hexadecimal form. If the hexadecimal data is converted to binary it gives exactly a .png image data.
aPngStrings | The wxArrayString to write to. |
Definition at line 192 of file bitmap_base.cpp.
void BITMAP_BASE::SetImage | ( | wxImage * | aImage | ) |
Definition at line 71 of file bitmap_base.cpp.
References m_image, m_originalImage, rebuildBitmap(), and updatePPI().
Referenced by SCH_BITMAP::SetImage(), and PCB_BITMAP::SetImage().
|
inline |
Definition at line 69 of file bitmap_base.h.
References m_pixelSizeIu.
Referenced by PCB_BITMAP::operator=(), PCB_BITMAP::PCB_BITMAP(), PL_EDITOR_FRAME::PrintPage(), PLEDITOR_PRINTOUT::PrintPage(), SCH_BITMAP::ReadImageFile(), PCB_BITMAP::ReadImageFile(), SCH_BITMAP::SetImage(), PCB_BITMAP::SetImage(), DS_DATA_ITEM_BITMAP::SyncDrawItems(), and TEST_BITMAP_BASE_FIXTURE::TEST_BITMAP_BASE_FIXTURE().
|
inline |
Definition at line 79 of file bitmap_base.h.
References m_scale.
Referenced by SCH_LEGACY_PLUGIN::loadBitmap(), DRAWING_SHEET_PARSER::parseBitmap(), SCH_BITMAP::SetImageScale(), PCB_BITMAP::SetImageScale(), DS_DATA_ITEM_BITMAP::SetPPI(), TEST_BITMAP_BASE_FIXTURE::TEST_BITMAP_BASE_FIXTURE(), and PANEL_IMAGE_EDITOR::TransferToImage().
|
private |
Definition at line 94 of file bitmap_base.cpp.
References KiROUND(), m_originalImage, and m_ppi.
Referenced by ReadImageFile(), and SetImage().
|
private |
Definition at line 245 of file bitmap_base.h.
Referenced by BITMAP_BASE(), DrawBitmap(), GetSize(), ImportData(), LoadData(), rebuildBitmap(), and ~BITMAP_BASE().
|
private |
Definition at line 243 of file bitmap_base.h.
Referenced by BITMAP_BASE(), ConvertToGreyscale(), GetImageData(), GetSizePixels(), ImportData(), LoadData(), Mirror(), PlotImage(), ReadImageFile(), rebuildBitmap(), Rotate(), SaveData(), SetImage(), and ~BITMAP_BASE().
|
private |
Definition at line 251 of file bitmap_base.h.
Referenced by BITMAP_BASE(), GetImageID(), ImportData(), and rebuildBitmap().
|
private |
Definition at line 252 of file bitmap_base.h.
Referenced by BITMAP_BASE(), ImportData(), IsMirrored(), and Mirror().
|
private |
Definition at line 244 of file bitmap_base.h.
Referenced by BITMAP_BASE(), ConvertToGreyscale(), GetOriginalImageData(), ImportData(), LoadData(), ReadImageFile(), SetImage(), updatePPI(), and ~BITMAP_BASE().
|
private |
Definition at line 246 of file bitmap_base.h.
Referenced by BITMAP_BASE(), GetPixelSizeIu(), GetScalingFactor(), ImportData(), and SetPixelSizeIu().
|
private |
Definition at line 250 of file bitmap_base.h.
Referenced by BITMAP_BASE(), GetPPI(), ImportData(), and updatePPI().
|
private |
Definition at line 253 of file bitmap_base.h.
Referenced by BITMAP_BASE(), ImportData(), Rotate(), and Rotation().
|
private |
Definition at line 241 of file bitmap_base.h.
Referenced by BITMAP_BASE(), GetScale(), GetScalingFactor(), ImportData(), and SetScale().