mirror of https://github.com/KLayout/klayout.git
Proper scaling with resolution
- stipple display in layer list now follows view resolution - using DCoord for text default size for cases where default size < DBU
This commit is contained in:
parent
cd69f29508
commit
a802cd0e91
|
|
@ -386,12 +386,12 @@ BitmapRenderer::draw (const db::Shape &shape, const db::CplxTrans &trans,
|
||||||
if (m_draw_texts && text) {
|
if (m_draw_texts && text) {
|
||||||
|
|
||||||
db::DFTrans fp (db::DFTrans::r0);
|
db::DFTrans fp (db::DFTrans::r0);
|
||||||
db::DCoord h = trans.ctrans (m_default_text_size);
|
db::DCoord h = trans.mag () * m_default_text_size;
|
||||||
db::Font font = shape.text_font () == db::NoFont ? m_font : shape.text_font ();
|
db::Font font = shape.text_font () == db::NoFont ? m_font : shape.text_font ();
|
||||||
|
|
||||||
if (m_apply_text_trans && font != db::NoFont && font != db::DefaultFont) {
|
if (m_apply_text_trans && font != db::NoFont && font != db::DefaultFont) {
|
||||||
fp = db::DFTrans (trans.fp_trans () * shape.text_trans ());
|
fp = db::DFTrans (trans.fp_trans () * shape.text_trans ());
|
||||||
h = trans.ctrans (shape.text_size () > 0 ? shape.text_size () : m_default_text_size);
|
h = trans.mag () * (shape.text_size () > 0 ? shape.text_size () : m_default_text_size);
|
||||||
}
|
}
|
||||||
|
|
||||||
db::HAlign halign = shape.text_halign ();
|
db::HAlign halign = shape.text_halign ();
|
||||||
|
|
@ -1087,12 +1087,12 @@ BitmapRenderer::draw (const db::Text &txt, const db::CplxTrans &trans,
|
||||||
if (m_draw_texts && text) {
|
if (m_draw_texts && text) {
|
||||||
|
|
||||||
db::DFTrans fp (db::DFTrans::r0);
|
db::DFTrans fp (db::DFTrans::r0);
|
||||||
db::DCoord h = trans.ctrans (m_default_text_size);
|
db::DCoord h = trans.mag () * m_default_text_size;
|
||||||
db::Font font = txt.font () == db::NoFont ? m_font : txt.font ();
|
db::Font font = txt.font () == db::NoFont ? m_font : txt.font ();
|
||||||
|
|
||||||
if (m_apply_text_trans && font != db::NoFont && font != db::DefaultFont) {
|
if (m_apply_text_trans && font != db::NoFont && font != db::DefaultFont) {
|
||||||
fp = db::DFTrans (trans.fp_trans () * txt.trans ());
|
fp = db::DFTrans (trans.fp_trans () * txt.trans ());
|
||||||
h = trans.ctrans (txt.size () > 0 ? txt.size () : m_default_text_size);
|
h = trans.mag () * (txt.size () > 0 ? txt.size () : m_default_text_size);
|
||||||
}
|
}
|
||||||
|
|
||||||
double fy = 0.0;
|
double fy = 0.0;
|
||||||
|
|
|
||||||
|
|
@ -338,6 +338,14 @@ public:
|
||||||
*/
|
*/
|
||||||
double resolution () const;
|
double resolution () const;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Gets the gamma value
|
||||||
|
*/
|
||||||
|
double gamma () const
|
||||||
|
{
|
||||||
|
return m_gamma;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Reimplementation of ViewObjectCanvas: Background color
|
* @brief Reimplementation of ViewObjectCanvas: Background color
|
||||||
*/
|
*/
|
||||||
|
|
|
||||||
|
|
@ -780,21 +780,30 @@ LayoutViewBase::configure (const std::string &name, const std::string &value)
|
||||||
|
|
||||||
int os = 1;
|
int os = 1;
|
||||||
tl::from_string (value, os);
|
tl::from_string (value, os);
|
||||||
mp_canvas->set_oversampling (os);
|
if (os != mp_canvas->oversampling ()) {
|
||||||
|
mp_canvas->set_oversampling (os);
|
||||||
|
resolution_changed_event ();
|
||||||
|
}
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
} else if (name == cfg_highres_mode) {
|
} else if (name == cfg_highres_mode) {
|
||||||
|
|
||||||
bool hrm = false;
|
bool hrm = false;
|
||||||
tl::from_string (value, hrm);
|
tl::from_string (value, hrm);
|
||||||
mp_canvas->set_highres_mode (hrm);
|
if (hrm != mp_canvas->highres_mode ()) {
|
||||||
|
mp_canvas->set_highres_mode (hrm);
|
||||||
|
resolution_changed_event ();
|
||||||
|
}
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
} else if (name == cfg_subres_mode) {
|
} else if (name == cfg_subres_mode) {
|
||||||
|
|
||||||
bool srm = false;
|
bool srm = false;
|
||||||
tl::from_string (value, srm);
|
tl::from_string (value, srm);
|
||||||
mp_canvas->set_subres_mode (srm);
|
if (srm != mp_canvas->subres_mode ()) {
|
||||||
|
mp_canvas->set_subres_mode (srm);
|
||||||
|
resolution_changed_event ();
|
||||||
|
}
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
} else if (name == cfg_image_cache_size) {
|
} else if (name == cfg_image_cache_size) {
|
||||||
|
|
@ -1565,14 +1574,12 @@ tl::PixelBuffer
|
||||||
LayoutViewBase::icon_for_layer (const LayerPropertiesConstIterator &iter, unsigned int w, unsigned int h, double dpr, unsigned int di_off, bool no_state)
|
LayoutViewBase::icon_for_layer (const LayerPropertiesConstIterator &iter, unsigned int w, unsigned int h, double dpr, unsigned int di_off, bool no_state)
|
||||||
{
|
{
|
||||||
if (dpr < 0.0) {
|
if (dpr < 0.0) {
|
||||||
dpr = canvas ()->dpr ();
|
dpr = canvas () ? canvas ()->dpr () : 1.0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int oversampling = canvas () ? canvas ()->oversampling () : 1;
|
double gamma = canvas () ? canvas ()->gamma () : 2.0;
|
||||||
double gamma = 2.0;
|
double dpr_drawing = canvas () ? 1.0 / canvas ()->resolution () : 1.0;
|
||||||
|
unsigned int oversampling = canvas () ? canvas ()->oversampling () : 1;
|
||||||
bool hrm = canvas () ? canvas ()->highres_mode () : false;
|
|
||||||
double dpr_drawing = oversampling * (hrm ? 1.0 : dpr);
|
|
||||||
|
|
||||||
h = std::max ((unsigned int) 16, h) * oversampling * dpr + 0.5;
|
h = std::max ((unsigned int) 16, h) * oversampling * dpr + 0.5;
|
||||||
w = std::max ((unsigned int) 16, w) * oversampling * dpr + 0.5;
|
w = std::max ((unsigned int) 16, w) * oversampling * dpr + 0.5;
|
||||||
|
|
|
||||||
|
|
@ -789,6 +789,11 @@ public:
|
||||||
*/
|
*/
|
||||||
tl::Event cell_visibility_changed_event;
|
tl::Event cell_visibility_changed_event;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief An event signalling that the resolution has changed
|
||||||
|
*/
|
||||||
|
tl::Event resolution_changed_event;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Save the given cellview into the given file (with options)
|
* @brief Save the given cellview into the given file (with options)
|
||||||
* If "update" is true, the cell view's properties will be updated (options, filename etc.).
|
* If "update" is true, the cell view's properties will be updated (options, filename etc.).
|
||||||
|
|
|
||||||
|
|
@ -637,7 +637,7 @@ ShapeMarker::render (const Viewport &vp, ViewObjectCanvas &canvas)
|
||||||
|
|
||||||
r.set_font (db::Font (view ()->text_font ()));
|
r.set_font (db::Font (view ()->text_font ()));
|
||||||
r.apply_text_trans (view ()->apply_text_trans ());
|
r.apply_text_trans (view ()->apply_text_trans ());
|
||||||
r.default_text_size (db::Coord (view ()->default_text_size () / ly->dbu ()));
|
r.default_text_size (view ()->default_text_size () / ly->dbu ());
|
||||||
r.set_precise (true);
|
r.set_precise (true);
|
||||||
|
|
||||||
if (trans_vector ()) {
|
if (trans_vector ()) {
|
||||||
|
|
@ -1168,7 +1168,7 @@ Marker::render (const Viewport &vp, ViewObjectCanvas &canvas)
|
||||||
|
|
||||||
r.set_font (db::Font (view ()->text_font ()));
|
r.set_font (db::Font (view ()->text_font ()));
|
||||||
r.apply_text_trans (view ()->apply_text_trans ());
|
r.apply_text_trans (view ()->apply_text_trans ());
|
||||||
r.default_text_size (db::Coord (view ()->default_text_size () / dbu ()));
|
r.default_text_size (view ()->default_text_size () / dbu ());
|
||||||
r.set_precise (true);
|
r.set_precise (true);
|
||||||
|
|
||||||
if (! trans_vector ()) {
|
if (! trans_vector ()) {
|
||||||
|
|
@ -1316,7 +1316,7 @@ DMarker::render (const Viewport &vp, ViewObjectCanvas &canvas)
|
||||||
|
|
||||||
r.set_font (db::Font (view ()->text_font ()));
|
r.set_font (db::Font (view ()->text_font ()));
|
||||||
r.apply_text_trans (view ()->apply_text_trans ());
|
r.apply_text_trans (view ()->apply_text_trans ());
|
||||||
r.default_text_size (view ()->default_text_size ());
|
r.default_text_size_dbl (view ()->default_text_size ());
|
||||||
r.set_precise (true);
|
r.set_precise (true);
|
||||||
|
|
||||||
db::DCplxTrans t = vp.trans ();
|
db::DCplxTrans t = vp.trans ();
|
||||||
|
|
|
||||||
|
|
@ -204,7 +204,7 @@ RedrawThreadWorker::perform_task (tl::Task *task)
|
||||||
mp_renderer->draw_texts (m_text_visible);
|
mp_renderer->draw_texts (m_text_visible);
|
||||||
mp_renderer->draw_properties (m_show_properties);
|
mp_renderer->draw_properties (m_show_properties);
|
||||||
mp_renderer->draw_description_property (false);
|
mp_renderer->draw_description_property (false);
|
||||||
mp_renderer->default_text_size (db::Coord (m_default_text_size / mp_layout->dbu ()));
|
mp_renderer->default_text_size (m_default_text_size / mp_layout->dbu ());
|
||||||
mp_renderer->set_font (db::Font (m_text_font));
|
mp_renderer->set_font (db::Font (m_text_font));
|
||||||
mp_renderer->apply_text_trans (m_apply_text_trans);
|
mp_renderer->apply_text_trans (m_apply_text_trans);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -40,8 +40,8 @@ Renderer::Renderer (unsigned int width, unsigned int height, double resolution)
|
||||||
: m_draw_texts (true),
|
: m_draw_texts (true),
|
||||||
m_draw_properties (false),
|
m_draw_properties (false),
|
||||||
m_draw_description_property (false),
|
m_draw_description_property (false),
|
||||||
m_default_text_size (16),
|
m_default_text_size (1000),
|
||||||
m_default_text_size_dbl (16),
|
m_default_text_size_dbl (1.0),
|
||||||
m_apply_text_trans (true),
|
m_apply_text_trans (true),
|
||||||
m_precise (false),
|
m_precise (false),
|
||||||
m_xfill (false),
|
m_xfill (false),
|
||||||
|
|
@ -94,7 +94,7 @@ Renderer::draw_propstring (db::properties_id_type id,
|
||||||
lay::CanvasPlane *text, const db::CplxTrans &trans)
|
lay::CanvasPlane *text, const db::CplxTrans &trans)
|
||||||
{
|
{
|
||||||
db::DPoint tp1 (pref + db::DVector (2.0, -2.0));
|
db::DPoint tp1 (pref + db::DVector (2.0, -2.0));
|
||||||
db::DPoint tp2 (pref + db::DVector (2.0, -2.0 - trans.ctrans (m_default_text_size)));
|
db::DPoint tp2 (pref + db::DVector (2.0, -2.0 - trans.mag () * m_default_text_size));
|
||||||
|
|
||||||
std::string ptext;
|
std::string ptext;
|
||||||
|
|
||||||
|
|
@ -119,7 +119,7 @@ Renderer::draw_description_propstring (db::properties_id_type id,
|
||||||
lay::CanvasPlane *text, const db::CplxTrans &trans)
|
lay::CanvasPlane *text, const db::CplxTrans &trans)
|
||||||
{
|
{
|
||||||
db::DPoint tp1 (pref + db::DVector (5.0, -5.0));
|
db::DPoint tp1 (pref + db::DVector (5.0, -5.0));
|
||||||
db::DPoint tp2 (pref + db::DVector (5.0, -5.0 - trans.ctrans (m_default_text_size)));
|
db::DPoint tp2 (pref + db::DVector (5.0, -5.0 - trans.mag () * m_default_text_size));
|
||||||
|
|
||||||
const db::PropertiesRepository::properties_set &props = prep->properties (id);
|
const db::PropertiesRepository::properties_set &props = prep->properties (id);
|
||||||
// TODO: get rid of this const_cast hack (i.e. by a mutable definition inside the properties repository)
|
// TODO: get rid of this const_cast hack (i.e. by a mutable definition inside the properties repository)
|
||||||
|
|
|
||||||
|
|
@ -116,31 +116,31 @@ public:
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief The default text size to use for draw(db::Text..)
|
* @brief The default text size to use for draw(db::Text..) - i.e in DBU units
|
||||||
*/
|
*/
|
||||||
void default_text_size (db::Coord sz)
|
void default_text_size (db::DCoord sz)
|
||||||
{
|
{
|
||||||
m_default_text_size = sz;
|
m_default_text_size = sz;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Get the default text size
|
* @brief Get the default text size to use for draw(db::Text..) - i.e in DBU units
|
||||||
*/
|
*/
|
||||||
db::Coord default_text_size () const
|
db::DCoord default_text_size () const
|
||||||
{
|
{
|
||||||
return m_default_text_size;
|
return m_default_text_size;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief The default text size to use for draw(db::DText..)
|
* @brief The default text size to use for draw(db::DText..) - i.e. in micron units
|
||||||
*/
|
*/
|
||||||
void default_text_size (double sz)
|
void default_text_size_dbl (double sz)
|
||||||
{
|
{
|
||||||
m_default_text_size_dbl = sz;
|
m_default_text_size_dbl = sz;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Get the default text size for draw (DText ...)
|
* @brief Get the default text size for draw (DText ...) - i.e. in micron units
|
||||||
*/
|
*/
|
||||||
double default_text_size_dbl () const
|
double default_text_size_dbl () const
|
||||||
{
|
{
|
||||||
|
|
@ -404,7 +404,7 @@ protected:
|
||||||
bool m_draw_texts;
|
bool m_draw_texts;
|
||||||
bool m_draw_properties;
|
bool m_draw_properties;
|
||||||
bool m_draw_description_property;
|
bool m_draw_description_property;
|
||||||
db::Coord m_default_text_size;
|
db::DCoord m_default_text_size;
|
||||||
double m_default_text_size_dbl;
|
double m_default_text_size_dbl;
|
||||||
bool m_apply_text_trans;
|
bool m_apply_text_trans;
|
||||||
bool m_precise;
|
bool m_precise;
|
||||||
|
|
|
||||||
|
|
@ -338,6 +338,7 @@ LayerControlPanel::LayerControlPanel (lay::LayoutViewBase *view, db::Manager *ma
|
||||||
mp_view->cellview_changed_event.add (this, &LayerControlPanel::signal_cv_changed_with_int);
|
mp_view->cellview_changed_event.add (this, &LayerControlPanel::signal_cv_changed_with_int);
|
||||||
mp_view->viewport_changed_event.add (this, &LayerControlPanel::signal_vp_changed);
|
mp_view->viewport_changed_event.add (this, &LayerControlPanel::signal_vp_changed);
|
||||||
mp_view->hier_levels_changed_event.add (this, &LayerControlPanel::signal_vp_changed);
|
mp_view->hier_levels_changed_event.add (this, &LayerControlPanel::signal_vp_changed);
|
||||||
|
mp_view->resolution_changed_event.add (this, &LayerControlPanel::signal_resolution_changed);
|
||||||
|
|
||||||
QFrame *tb = new QFrame (this);
|
QFrame *tb = new QFrame (this);
|
||||||
l->addWidget (tb);
|
l->addWidget (tb);
|
||||||
|
|
@ -2051,6 +2052,12 @@ LayerControlPanel::redo (db::Op *op)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
LayerControlPanel::signal_resolution_changed ()
|
||||||
|
{
|
||||||
|
m_do_update_content_dm ();
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
LayerControlPanel::signal_vp_changed ()
|
LayerControlPanel::signal_vp_changed ()
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -385,6 +385,7 @@ private:
|
||||||
void signal_cv_changed ();
|
void signal_cv_changed ();
|
||||||
void signal_cv_changed_with_int (int index);
|
void signal_cv_changed_with_int (int index);
|
||||||
void signal_vp_changed ();
|
void signal_vp_changed ();
|
||||||
|
void signal_resolution_changed ();
|
||||||
|
|
||||||
void do_update_content ();
|
void do_update_content ();
|
||||||
void do_update_visibility ();
|
void do_update_visibility ();
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue