Scribus Developer Documentation - API
logo-pen

Scribus Developer Documentation - API

Canvas Class Reference

#include <canvas.h>

Collaboration diagram for Canvas:

Collaboration graph
[legend]

List of all members.

Public Types

enum  FrameHandle {
  OUTSIDE = -1, INSIDE = 0, NORTHWEST = 2, NORTH = 8,
  NORTHEAST = 3, EAST = 6, SOUTHEAST = 1, SOUTH = 5,
  SOUTHWEST = 4, WEST = 7
}
enum  RenderMode {
  RENDER_NORMAL, RENDER_BUFFERED, RENDER_SELECTION_SEPARATE, RENDER_SELECTION_BUFFERED,
  RENDER_LEGACY
}

Public Member Functions

 Canvas (ScribusDoc *doc, ScribusView *parent)
void setRenderMode (RenderMode m)
void clearBuffers ()
void resetRenderMode ()
void setRenderModeFillBuffer ()
void setRenderModeUseBuffer (bool use)
double scale () const
void setScale (double scale)
QPoint canvasToLocal (FPoint p) const
QPoint canvasToGlobal (FPoint p) const
QPoint canvasToLocal (QPointF p) const
QPoint canvasToGlobal (QPointF p) const
QRect canvasToLocal (QRectF p) const
QRect canvasToGlobal (QRectF p) const
FPoint localToCanvas (QPoint p) const
FPoint globalToCanvas (QPoint p) const
QRectF globalToCanvas (QRect p) const
bool hitsCanvasPoint (QPoint globalPoint, FPoint canvasPoint) const
bool hitsCanvasPoint (QPoint globalPoint, QPointF canvasPoint) const
FrameHandle frameHitTest (QPointF canvasPoint, PageItem *frame) const
FrameHandle frameHitTest (QPointF point, QRectF frame) const
PageItemitemUnderCursor (QPoint globalPos, PageItem *itemAbove=NULL, bool allowInGroup=false, bool allowMasterItems=false) const
const QPolygon & redrawPolygon () const
QPolygon & newRedrawPolygon ()
void setPreviewMode (bool on)
bool isPreviewMode () const
bool usePreviewVisual () const
int previewVisual () const
void setPreviewVisual (int mode)
void DrawMasterItems (ScPainter *painter, Page *page, QRect clip)
void DrawPageItems (ScPainter *painter, QRect clip)
virtual void paintEvent (QPaintEvent *p)

Static Public Attributes

static const uint moveWithFullOutlinesThreshold = 21
static const uint moveWithBoxesOnlyThreshold = 41

Private Member Functions

void DrawPageMarks (ScPainter *p, Page *page, QRect clip)
void drawLinkFrameLine (ScPainter *painter, FPoint &start, FPoint &end)
void PaintSizeRect (QRect neu)
void PaintSizeRect (QPolygon neu)
 ???
void Transform (PageItem *currItem, QPainter *p)
void Transform (PageItem *currItem, QMatrix &m)
void TransformM (PageItem *currItem, QPainter *p)
void getGroupRectScreen (double *x, double *y, double *w, double *h)
void adjustBuffer ()
void fillBuffer (QPaintDevice *buffer, QPoint bufferOrigin, QRect clipRect)
void drawContents (QPainter *p, int clipx, int clipy, int clipw, int cliph)
void drawBackgroundMasterpage (ScPainter *painter, int clipx, int clipy, int clipw, int cliph)
void drawBackgroundPageOutlines (ScPainter *painter, int clipx, int clipy, int clipw, int cliph)
void drawGuides (ScPainter *painter, int clipx, int clipy, int clipw, int cliph)
void drawFrameLinks (ScPainter *painter)
void drawControls (QPainter *p)
void drawControlsMovingItemsRect (QPainter *pp)
void drawControlsGradientVectors (QPainter *psx, PageItem *currItem)
void drawControlsBezierCurve (QPainter *pp, PageItem *currItem)
void drawControlsMeasurementLine (QPainter *pp)
void drawControlsDrawLine (QPainter *pp)
void drawControlsFreehandLine (QPainter *pp)
void getClipPathForPages (FPointArray *PoLine)
void calculateFrameLinkPoints (PageItem *pi1, PageItem *pi2, FPoint &start, FPoint &end)

Private Attributes

ScribusDocm_doc
ScribusViewm_view
CanvasViewMode m_viewMode
RenderMode m_renderMode
QPixmap m_buffer
QRect m_bufferRect
QPixmap m_selectionBuffer
QRect m_selectionRect
FPoint m_oldMinCanvasCoordinate

Friends

class ScribusView
class LegacyMode
class CanvasMode_NodeEdit
class FreehandMode


Detailed Description

Definition at line 73 of file canvas.h.


Member Enumeration Documentation

Enumerator:
OUTSIDE 
INSIDE 
NORTHWEST 
NORTH 
NORTHEAST 
EAST 
SOUTHEAST 
SOUTH 
SOUTHWEST 
WEST 

Definition at line 94 of file canvas.h.

Enumerator:
RENDER_NORMAL 
RENDER_BUFFERED 
RENDER_SELECTION_SEPARATE 
RENDER_SELECTION_BUFFERED 
RENDER_LEGACY 

Definition at line 107 of file canvas.h.


Constructor & Destructor Documentation

Canvas::Canvas ( ScribusDoc doc,
ScribusView parent 
)


Member Function Documentation

void Canvas::setRenderMode ( RenderMode  m  ) 

Definition at line 398 of file canvas.cpp.

References clearBuffers(), m_renderMode, and RENDER_SELECTION_SEPARATE.

Referenced by LegacyMode::mouseMoveEvent().

void Canvas::clearBuffers (  ) 

Definition at line 408 of file canvas.cpp.

References m_buffer, m_bufferRect, m_selectionBuffer, and m_selectionRect.

Referenced by setRenderMode().

void Canvas::resetRenderMode (  )  [inline]

void Canvas::setRenderModeFillBuffer (  )  [inline]

void Canvas::setRenderModeUseBuffer ( bool  use  )  [inline]

double Canvas::scale (  )  const [inline]

void Canvas::setScale ( double  scale  )  [inline]

Definition at line 126 of file canvas.h.

Referenced by ScribusView::PageToPixmap().

QPoint Canvas::canvasToLocal ( FPoint  p  )  const

QPoint Canvas::canvasToGlobal ( FPoint  p  )  const

QPoint Canvas::canvasToLocal ( QPointF  p  )  const

QPoint Canvas::canvasToGlobal ( QPointF  p  )  const

Definition at line 107 of file canvas.cpp.

References canvasToLocal().

QRect Canvas::canvasToLocal ( QRectF  p  )  const

QRect Canvas::canvasToGlobal ( QRectF  p  )  const

Definition at line 112 of file canvas.cpp.

References canvasToLocal(), m_viewMode, and CanvasViewMode::scale.

FPoint Canvas::localToCanvas ( QPoint  p  )  const

FPoint Canvas::globalToCanvas ( QPoint  p  )  const

QRectF Canvas::globalToCanvas ( QRect  p  )  const

Definition at line 128 of file canvas.cpp.

References globalToCanvas(), m_viewMode, CanvasViewMode::scale, FPoint::x(), and FPoint::y().

bool Canvas::hitsCanvasPoint ( QPoint  globalPoint,
FPoint  canvasPoint 
) const

bool Canvas::hitsCanvasPoint ( QPoint  globalPoint,
QPointF  canvasPoint 
) const

Definition at line 149 of file canvas.cpp.

References canvasToLocal(), guidesPrefs::grabRad, ScribusDoc::guidesSettings, and m_doc.

Canvas::FrameHandle Canvas::frameHitTest ( QPointF  canvasPoint,
PageItem item 
) const

Returns the framehandle or INSIDE if the position falls into the frame.

returns -1 if canvasPoint is outside the frame + grabradius. returns frameHandle if canvasPoint is near a framehandle otherwise 0

Definition at line 164 of file canvas.cpp.

References PageItem::getTransform(), PageItem::height, and PageItem::width.

Referenced by ScribusView::contentsDropEvent(), LegacyMode::mouseMoveEvent(), LegacyMode::mousePressEvent(), ResizeGesture::mousePressEvent(), and LegacyMode::SeleItem().

Canvas::FrameHandle Canvas::frameHitTest ( QPointF  point,
QRectF  frame 
) const

PageItem * Canvas::itemUnderCursor ( QPoint  globalPos,
PageItem itemAbove = NULL,
bool  allowInGroup = false,
bool  allowMasterItems = false 
) const

Returns the item under the cursor or NULL if none found. Does *not* change the selection. If itemAbove is given, it will look for an item under itemAbove, allowing select under. The flag 'allowInGroup' controls if single items within a group or only whole groups are considered. The flag 'allowMasterItems' controls if items from a masterpage are considered. (this flag is ignored in masterpage mode, since all items are masterpage items then).

Definition at line 269 of file canvas.cpp.

References ScribusDoc::activeLayer(), PageItem::ChangedMasterItem, PageItem::Clip, ScribusDoc::currentPage(), Page::FromMaster, PageItem::getTransform(), globalToCanvas(), guidesPrefs::grabRad, PageItem::Groups, ScribusDoc::guidesSettings, PageItem::height, ScribusDoc::Items, ScribusDoc::layerLocked(), PageItem::LayerNr, m_doc, ScribusDoc::MasterNames, ScribusDoc::masterPageMode(), ScribusDoc::MasterPages, Page::MPageNam, PageItem::OwnPage, Page::pageNr(), PageItem::width, Page::xOffset(), and Page::yOffset().

Referenced by LegacyMode::SeleItem().

const QPolygon& Canvas::redrawPolygon (  )  const [inline]

Definition at line 153 of file canvas.h.

Referenced by LegacyMode::mouseMoveEvent(), and FreehandMode::mouseMoveEvent().

QPolygon& Canvas::newRedrawPolygon (  )  [inline]

void Canvas::setPreviewMode ( bool  on  )  [inline]

Definition at line 159 of file canvas.h.

Referenced by SVGExPlug::doExport().

bool Canvas::isPreviewMode (  )  const [inline]

Definition at line 160 of file canvas.h.

Referenced by PageItem_TextFrame::DrawObj_Post().

bool Canvas::usePreviewVisual (  )  const [inline]

Definition at line 161 of file canvas.h.

int Canvas::previewVisual (  )  const [inline]

Definition at line 162 of file canvas.h.

Referenced by ScribusView::languageChange().

void Canvas::setPreviewVisual ( int  mode  )  [inline]

Definition at line 163 of file canvas.h.

Referenced by ScribusView::ScribusView(), and ScribusView::switchPreviewVisual().

void Canvas::DrawMasterItems ( ScPainter painter,
Page page,
QRect  clip 
)

draws masterpage items in layer order

Definition at line 1041 of file canvas.cpp.

References ScPainter::beginLayer(), ScLayer::blendMode, PageItem::BottomLine, PageItem::BoundingX, PageItem::BoundingY, PageItem::ChangedMasterItem, FPointArray::copy(), ScPainter::drawLine(), PageItem::DrawObj(), ScPainter::endLayer(), PageItem::fillBlendmode(), PageItem::fillTransparency, CanvasViewMode::forceRedraw, Page::FromMaster, PageItem::getBoundingRect(), PageItem::groupsLastItem, ScribusDoc::guidesSettings, PageItem::height, PageItem::invalidateLayout(), PageItem::isGroupControl, ScLayer::isPrintable, PageItem::isSelected(), PageItem::isTableItem, ScLayer::isViewable, ScribusDoc::layerCount(), guidesPrefs::layerMarkersShown, PageItem::LayerNr, ScribusDoc::Layers, PageItem::LeftLine, ScLayers::levelToLayer(), PageItem::lineColor, PageItem::lineShade, PageItem::lineWidth, ScLayer::LNr, localToCanvas(), m_doc, m_viewMode, FPointArray::map(), ScribusDoc::MasterNames, ScribusDoc::MasterPages, PageItem::moveBy(), Page::MPageNam, CommonStrings::None, CanvasViewMode::operItemMoving, CanvasViewMode::operItemResizeInEditMode, orig, PageItem::OwnPage, Page::pageNr(), PageItem::PLineArt, PageItem::PLineJoin, PageItem::PoLine, CanvasViewMode::previewMode, PageItem::printEnabled(), ScPainter::restore(), PageItem::RightLine, ScPainter::rotate(), PageItem::rotation, ScPainter::save(), PageItem::savedOwnPage, CanvasViewMode::scale, ScPainter::setPen(), PageItem::SetQColor(), PageItem::setXYPos(), PageItem::TopLine, ScPainter::translate(), FPointArray::translate(), ScLayer::transparency, CanvasViewMode::viewAsPreview, PageItem::width, FPoint::x(), Page::xOffset(), PageItem::xPos, FPoint::y(), Page::yOffset(), and PageItem::yPos.

Referenced by SVGExPlug::doExport(), drawContents(), and ScribusView::PageToPixmap().

void Canvas::DrawPageItems ( ScPainter painter,
QRect  clip 
)

draws page items in layer order

Definition at line 1248 of file canvas.cpp.

References PageItem::asTextFrame(), ScPainter::beginLayer(), ScLayer::blendMode, PageItem::BottomLine, FPointArray::copy(), ScribusDoc::currentPage(), ScribusDoc::currentPageNumber(), ScPainter::drawLine(), PageItem::DrawObj(), CanvasViewMode::drawSelectedItemsWithControls, ScPainter::endLayer(), PageItem::fillBlendmode(), PageItem::fillTransparency, CanvasViewMode::forceRedraw, PageItem::getBoundingRect(), PageItem::groupsLastItem, ScribusDoc::guidesSettings, PageItem::height, PageItem::invalidateLayout(), PageItem::isGroupControl, ScLayer::isPrintable, PageItem::isSelected(), PageItem::isTableItem, ScLayer::isViewable, ScribusDoc::Items, ScribusDoc::layerCount(), guidesPrefs::layerMarkersShown, PageItem::LayerNr, ScribusDoc::Layers, PageItem::LeftLine, ScLayers::levelToLayer(), PageItem::lineColor, PageItem::lineShade, PageItem::lineWidth, CanvasViewMode::linkedFramesToShow, ScLayer::LNr, localToCanvas(), m_doc, m_viewMode, FPointArray::map(), ScribusDoc::masterPageMode(), PageItem::nextInChain(), CommonStrings::None, PageItem::OnMasterPage, CanvasViewMode::operItemMoving, CanvasViewMode::operItemResizeInEditMode, orig, PageItem::OwnPage, Page::pageName(), PageItem::PLineArt, PageItem::PLineJoin, PageItem::PoLine, CanvasViewMode::previewMode, PageItem::prevInChain(), PageItem::printEnabled(), ScPainter::restore(), PageItem::RightLine, ScPainter::rotate(), PageItem::rotation, ScPainter::save(), CanvasViewMode::scale, ScPainter::setPen(), PageItem::SetQColor(), PageItem::textFlowUsesContourLine(), PageItem::TopLine, ScPainter::translate(), FPointArray::translate(), ScLayer::transparency, CanvasViewMode::viewAsPreview, PageItem::width, FPoint::x(), PageItem::xPos, FPoint::y(), and PageItem::yPos.

Referenced by SVGExPlug::doExport(), drawContents(), ScribusView::MPageToPixmap(), and ScribusView::PageToPixmap().

void Canvas::paintEvent ( QPaintEvent *  p  )  [virtual]

Actually we have at least three super-layers:

  • background (page outlines, guides if below)
  • content (master & page objects)
  • controls (selection, mode specific mrks, guides if above) For export we only need the contents.

Definition at line 583 of file canvas.cpp.

References adjustBuffer(), ScribusDoc::appMode, CanvasMode::drawControls(), drawControls(), fillBuffer(), CanvasViewMode::forceRedraw, ScribusDoc::isLoading(), m_buffer, m_bufferRect, ScribusView::m_canvasMode, m_doc, m_renderMode, m_view, m_viewMode, ScribusDoc::minCanvasCoordinate, modeNormal, RENDER_BUFFERED, RENDER_LEGACY, RENDER_NORMAL, RENDER_SELECTION_BUFFERED, RENDER_SELECTION_SEPARATE, CanvasViewMode::scale, FPoint::x(), and FPoint::y().

void Canvas::DrawPageMarks ( ScPainter p,
Page page,
QRect  clip 
) [private]

void Canvas::drawLinkFrameLine ( ScPainter painter,
FPoint start,
FPoint end 
) [private]

void Canvas::PaintSizeRect ( QRect  newRect  )  [private]

this is a wrapper around repaint()

Definition at line 1833 of file canvas.cpp.

Referenced by LegacyMode::HandleSizer(), LegacyMode::mouseMoveEvent(), and LegacyMode::mousePressEvent().

void Canvas::PaintSizeRect ( QPolygon  neu  )  [private]

???

Definition at line 1847 of file canvas.cpp.

References m_viewMode, and CanvasViewMode::redrawPolygon.

void Canvas::Transform ( PageItem currItem,
QPainter *  p 
) [private]

void Canvas::Transform ( PageItem currItem,
Q