Dillo v3.1.1-46-g8a360e32
|
Displays an instance of dw::core::Imgbuf. More...
#include <image.hh>
Public Member Functions | |
Image (const char *altText) | |
~Image () | |
virtual bool | getAdjustMinWidth () |
core::Iterator * | iterator (core::Content::Type mask, bool atEnd) |
Return an iterator for this widget. | |
core::Imgbuf * | getBuffer () |
void | setBuffer (core::Imgbuf *buffer, bool resize=false) |
Called, when an image buffer is attached. | |
void | drawRow (int row) |
Called, when data from a row is available and has been copied into the image buffer. | |
void | finish () |
Called, when all image data has been retrieved. | |
void | fatal () |
Called, when there are problems with the retrieval of image data. | |
void | setIsMap () |
Sets image as server side image map. | |
void | setUseMap (ImageMapsList *list, Object *key) |
Sets image as client side image map. | |
void | forceMapRedraw () |
![]() | |
void | setDeleteCallback (DW_Callback_t func, void *data) |
Widget () | |
~Widget () | |
bool | resizeQueued () |
bool | extremesQueued () |
bool | needsResize () |
bool | needsAllocate () |
bool | allocateQueued () |
bool | extremesChanged () |
bool | wasAllocated () |
void | setParent (Widget *parent) |
void | setQuasiParent (Widget *quasiParent) |
void | setGenerator (Widget *generator) |
style::Style * | getStyle () |
Allocation * | getAllocation () |
bool | inAllocation (int x, int y) |
int | boxOffsetX () |
int | boxRestWidth () |
int | boxDiffWidth () |
int | boxOffsetY () |
int | boxRestHeight () |
int | boxDiffHeight () |
virtual int | numSizeRequestReferences () |
See Sizes of Dillo Widgets (or Size requisitions depending on positions). | |
virtual Widget * | sizeRequestReference (int index) |
See Sizes of Dillo Widgets (or Size requisitions depending on positions). | |
virtual int | numGetExtremesReferences () |
See Sizes of Dillo Widgets (or Size requisitions depending on positions). | |
virtual Widget * | getExtremesReference (int index) |
See Sizes of Dillo Widgets (or Size requisitions depending on positions). | |
void | sizeRequest (Requisition *requisition, int numPos=0, Widget **references=NULL, int *x=NULL, int *y=NULL) |
This method is a wrapper for Widget::sizeRequestImpl(); it calls the latter only when needed. | |
void | getExtremes (Extremes *extremes, int numPos=0, Widget **references=NULL, int *x=NULL, int *y=NULL) |
Wrapper for Widget::getExtremesImpl(). | |
void | sizeAllocate (Allocation *allocation) |
Wrapper for Widget::sizeAllocateImpl, calls the latter only when needed. | |
void | calcExtraSpace (int numPos, Widget **references, int *x, int *y) |
Calculates dw::core::Widget::extraSpace. | |
int | getAvailWidth (bool forceValue) |
Return available width including margin/border/padding (extraSpace?), not only the content width. | |
int | getAvailHeight (bool forceValue) |
Return available height including margin/border/padding (extraSpace?), not only the content height. | |
void | correctRequisition (Requisition *requisition, void(*splitHeightFun)(int, int *, int *), bool allowDecreaseWidth, bool allowDecreaseHeight) |
void | correctExtremes (Extremes *extremes, bool useAdjustmentWidth) |
int | calcWidth (style::Length cssValue, int refWidth, Widget *refWidget, int limitMinWidth, bool forceValue) |
Computes a width value in pixels from cssValue. | |
void | calcFinalWidth (style::Style *style, int refWidth, Widget *refWidget, int limitMinWidth, bool forceValue, int *finalWidth) |
int | calcHeight (style::Length cssValue, bool usePercentage, int refHeight, Widget *refWidget, bool forceValue) |
virtual int | applyPerWidth (int containerWidth, style::Length perWidth) |
virtual int | applyPerHeight (int containerHeight, style::Length perHeight) |
int | getMinWidth (Extremes *extremes, bool forceValue) |
Used to evaluate Widget::adjustMinWidth. | |
virtual bool | isBlockLevel () |
virtual bool | isPossibleContainer () |
void | containerSizeChanged () |
bool | intersects (Widget *refWidget, Rectangle *area, Rectangle *intersection) |
Calculates the intersection of the visible allocation (i. | |
void | drawInterruption (View *view, Rectangle *area, DrawingContext *context) |
See Interrupted drawing for details. | |
virtual Widget * | getWidgetAtPoint (int x, int y, GettingWidgetAtPointContext *context) |
Widget * | getWidgetAtPointInterrupted (int x, int y, GettingWidgetAtPointContext *context) |
bool | buttonPress (EventButton *event) |
bool | buttonRelease (EventButton *event) |
bool | motionNotify (EventMotion *event) |
void | enterNotify (EventCrossing *event) |
void | leaveNotify (EventCrossing *event) |
virtual void | setStyle (style::Style *style) |
Change the style of a widget. | |
void | setBgColor (style::Color *bgColor) |
Set the background "behind" the widget, if it is not the background of the parent widget, e.g. | |
style::Color * | getBgColor () |
Get the actual background of a widget. | |
style::Color * | getFgColor () |
Get the actual foreground color of a widget. | |
void | drawBox (View *view, style::Style *style, Rectangle *area, int x, int y, int width, int height, bool inverse) |
Draw borders and background of a widget part, which allocation is given by (x, y, width, height) (widget coordinates). | |
void | drawWidgetBox (View *view, Rectangle *area, bool inverse) |
Draw borders and background of a widget. | |
void | drawSelected (View *view, Rectangle *area) |
void | setButtonSensitive (bool buttonSensitive) |
bool | isButtonSensitive () |
Widget * | getParent () |
Widget * | getContainer () |
Widget * | getTopLevel () |
Get the widget at the root of the tree, this widget is part from. | |
int | getLevel () |
Get the level of the widget within the tree. | |
int | getGeneratorLevel () |
Get the level of the widget within the tree, regarting the generators, not the parents. | |
Widget * | getNearestCommonAncestor (Widget *otherWidget) |
Get the widget with the highest level, which is a direct ancestor of widget1 and widget2. | |
WidgetReference * | getWidgetReference () |
void | setWidgetReference (WidgetReference *widgetReference) |
Widget * | getGenerator () |
Layout * | getLayout () |
void | scrollTo (HPosition hpos, VPosition vpos, int x, int y, int width, int height) |
void | getMarginArea (int *xMar, int *yMar, int *widthMar, int *heightMar) |
void | getBorderArea (int *xBor, int *yBor, int *widthBor, int *heightBor) |
void | getPaddingArea (int *xPad, int *yPad, int *widthPad, int *heightPad) |
Return the padding area (content plus padding). | |
virtual void | removeChild (Widget *child) |
![]() | |
IdentifiableObject () | |
void | intoStringBuffer (misc::StringBuffer *sb) |
Store a textual representation of the object in a misc::StringBuffer. | |
int | getClassId () |
Returns the class identifier. | |
const char * | getClassName () |
Return the name, under which the class of this object was registered. | |
bool | instanceOf (int otherClassId) |
Returns, whether this class is an instance of the class, given by otherClassId, or of a sub class of this class. | |
![]() | |
virtual | ~Object () |
The destructor is defined as virtual (but not abstract), so that destruction of Object's works properly. | |
virtual bool | equals (Object *other) |
Returns, whether two objects are equal. | |
virtual int | hashValue () |
Return a hash value for the object. | |
virtual Object * | clone () |
Return an exact copy of the object. | |
const char * | toString () |
Use object::Object::intoStringBuffer to return a textual representation of the object. | |
virtual size_t | sizeOf () |
Return the number of bytes, this object totally uses. | |
![]() | |
virtual | ~ImgRenderer () |
Static Public Attributes | |
static int | CLASS_ID = -1 |
![]() | |
static int | CLASS_ID = -1 |
Protected Member Functions | |
void | sizeRequestSimpl (core::Requisition *requisition) |
Simple variant, to be implemented by widgets with sizes not depending on positions. | |
void | getExtremesSimpl (core::Extremes *extremes) |
Simple variant, to be implemented by widgets with extremes not depending on positions. | |
void | sizeAllocateImpl (core::Allocation *allocation) |
See Sizes of Dillo Widgets. | |
void | containerSizeChangedForChildren () |
void | draw (core::View *view, core::Rectangle *area, core::DrawingContext *context) |
Area is given in widget coordinates. | |
bool | buttonPressImpl (core::EventButton *event) |
bool | buttonReleaseImpl (core::EventButton *event) |
void | enterNotifyImpl (core::EventCrossing *event) |
void | leaveNotifyImpl (core::EventCrossing *event) |
bool | motionNotifyImpl (core::EventMotion *event) |
int | contentX (core::MousePositionEvent *event) |
int | contentY (core::MousePositionEvent *event) |
![]() | |
int | getHeight () |
int | getContentWidth () |
int | getContentHeight () |
StackingContextMgr * | getNextStackingContextMgr () |
void | printFlag (Flags f) |
void | setFlags (Flags f) |
void | unsetFlags (Flags f) |
void | queueDraw () |
void | queueDrawArea (int x, int y, int width, int height) |
void | queueResize (int ref, bool extremesChanged) |
virtual void | sizeRequestImpl (Requisition *requisition, int numPos, Widget **references, int *x, int *y) |
See Sizes of Dillo Widgets. | |
virtual void | getExtremesImpl (Extremes *extremes, int numPos, Widget **references, int *x, int *y) |
See Sizes of Dillo Widgets. | |
virtual void | calcExtraSpaceImpl (int numPos, Widget **references, int *x, int *y) |
The actual implementation for calculating dw::core::Widget::extraSpace. | |
virtual void | resizeDrawImpl () |
Called after sizeAllocateImpl() to redraw necessary areas. | |
virtual void | markSizeChange (int ref) |
See Sizes of Dillo Widgets. | |
virtual void | markExtremesChange (int ref) |
See Sizes of Dillo Widgets. | |
virtual int | getAvailWidthOfChild (Widget *child, bool forceValue) |
Computes the content width available of a child widget. | |
virtual int | getAvailHeightOfChild (Widget *child, bool forceValue) |
virtual void | correctRequisitionOfChild (Widget *child, Requisition *requisition, void(*splitHeightFun)(int, int *, int *), bool allowDecreaseWidth, bool allowDecreaseHeight) |
void | correctReqWidthOfChild (Widget *child, Requisition *requisition, bool allowDecreaseWidth) |
void | correctReqHeightOfChild (Widget *child, Requisition *requisition, void(*splitHeightFun)(int, int *, int *), bool allowDecreaseHeight) |
virtual void | correctExtremesOfChild (Widget *child, Extremes *extremes, bool useAdjustmentWidth) |
virtual bool | affectedByContainerSizeChange () |
virtual bool | affectsSizeChangeContainerChild (Widget *child) |
virtual bool | usesAvailWidth () |
Must be implemengted by a method returning true, when getAvailWidth() is called. | |
virtual bool | usesAvailHeight () |
Must be implemengted by a method returning true, when getAvailHeight() is called. | |
virtual void | notifySetAsTopLevel () |
This method is called after a widget has been set as the top of a widget tree. | |
virtual void | notifySetParent () |
This method is called after a widget has been added to a parent. | |
char * | addAnchor (const char *name) |
char * | addAnchor (const char *name, int y) |
void | changeAnchor (char *name, int y) |
void | removeAnchor (char *name) |
void | setCursor (style::Cursor cursor) |
bool | selectionHandleEvent (SelectionState::EventType eventType, Iterator *it, int charPos, int linkNo, MousePositionEvent *event) |
![]() | |
void | registerName (const char *className, int *classId) |
This method must be called in the constructor for the sub class. | |
Private Attributes | |
char * | altText |
core::Imgbuf * | buffer |
int | bufWidth |
int | bufHeight |
int | altTextWidth |
bool | clicking |
int | currLink |
ImageMapsList * | mapList |
Object * | mapKey |
bool | isMap |
Additional Inherited Members | |
![]() | |
static void | setAdjustMinWidth (bool adjustMinWidth) |
static void | adjustHeight (int *height, bool allowDecreaseHeight, int ascent, int descent) |
![]() | |
int | parentRef |
This value is defined by the parent widget, and used for incremential resizing. | |
![]() | |
enum | Flags { RESIZE_QUEUED = 1 << 0 , EXTREMES_QUEUED = 1 << 1 , NEEDS_RESIZE = 1 << 2 , NEEDS_ALLOCATE = 1 << 3 , ALLOCATE_QUEUED = 1 << 4 , EXTREMES_CHANGED = 1 << 5 , WAS_ALLOCATED = 1 << 6 } |
![]() | |
WidgetImgRenderer * | widgetImgRenderer |
Allocation | allocation |
The current allocation: size and position, always relative to the canvas. | |
Layout * | layout |
style::Box | extraSpace |
Space around the margin box. | |
StackingContextMgr * | stackingContextMgr |
Set iff this widget constitutes a stacking context, as defined by CSS. | |
Widget * | stackingContextWidget |
The bottom-most ancestor (or this) for which stackingContextMgr is set. | |
Displays an instance of dw::core::Imgbuf.
The dw::core::Imgbuf is automatically scaled, when needed, but dw::Image does not keep a reference on the root buffer.
For image maps, dw::Image uses the signals defined in dw::core::Layout::LinkReceiver. For client side image maps, -1 is passed for the coordinates, for server side image maps, the respective coordinates are used. See section "Image Maps" below.
You must first create a list of image maps (dw::ImageMapList), which can be used for multiple images. The caller is responsible for freeing the dw::ImageMapList.
Adding a map is done by dw::ImageMapsList::startNewMap. The key is an instance of a sub class of object::Object. In the context of HTML, this is a URL, which defines this map globally, by combining the URL of the document, this map is defined in, with the value of the attribute "name" of the <MAP> element, as a fragment.
dw::ImageMapsList::addShapeToCurrentMap adds a shape to the current map. The link argument is a number, which is later passed to the dw::core::Layout::LinkReceiver.
This map list is then, together with the key for the image, passed to dw::Image::setUseMap. For HTML, a URL with the value of the "ismap" attribute of <IMG> should be used.
dw::Image will search the correct map, when needed. If it is not found at this time, but later defined, it will be found and used later. This is the case, when an HTML <MAP> is defined below the <IMG> in the document.
Currently, only maps defined in the same document as the image may be used, since the dw::ImageMapsList is stored in the HTML link block, and contains only the image maps defined in the document.
To use images for server side image maps, you must call dw::Image::setIsMap, and the dw::Image::style must contain a valid link (dw::core::style::Style::x_link). After this, motions and clicks are delegated to dw::core::Layout::LinkReceiver.
dw::Image::Image | ( | const char * | altText | ) |
Definition at line 146 of file image.cc.
References DBG_OBJ_CREATE, DBG_OBJ_SET_NUM, and dStrdup().
dw::Image::~Image | ( | ) |
Definition at line 164 of file image.cc.
References DBG_OBJ_DELETE.
|
protectedvirtual |
Reimplemented from dw::core::Widget.
Definition at line 381 of file image.cc.
References dw::core::EventButton::button, and layout.
|
protectedvirtual |
|
protectedvirtual |
Reimplemented from dw::core::Widget.
Definition at line 306 of file image.cc.
References DBG_OBJ_ENTER0, and DBG_OBJ_LEAVE.
|
protected |
Definition at line 340 of file image.cc.
References lout::misc::max(), and lout::misc::min().
|
protected |
Definition at line 348 of file image.cc.
References lout::misc::max(), and lout::misc::min().
|
protectedvirtual |
Area is given in widget coordinates.
TODO: draw selection
Implements dw::core::Widget.
Definition at line 412 of file image.cc.
References dw::core::View::drawImage(), dw::core::View::drawSimpleWrappedText(), dw::core::View::getClippingView(), dw::core::Rectangle::height, dw::core::Rectangle::intersectsWith(), layout, dw::core::View::mergeClippingView(), dw::core::style::Color::SHADING_NORMAL, dw::core::Rectangle::width, dw::core::Rectangle::x, and dw::core::Rectangle::y.
|
virtual |
Called, when data from a row is available and has been copied into the image buffer.
The implementation will typically queue the respective area for drawing.
Implements dw::core::ImgRenderer.
Definition at line 514 of file image.cc.
References dw::core::Rectangle::height, dw::core::Rectangle::width, dw::core::Rectangle::x, and dw::core::Rectangle::y.
Referenced by imageDrawTimeout(), imageDrawTimeout(), and imageDrawTimeout().
|
protectedvirtual |
|
virtual |
Called, when there are problems with the retrieval of image data.
The implementation may use this to indicate an error.
Implements dw::core::ImgRenderer.
|
virtual |
Called, when all image data has been retrieved.
The implementation may use this instead of "drawRow" for drawing, to limit the number of draws.
Implements dw::core::ImgRenderer.
|
inline |
Definition at line 179 of file image.hh.
References buffer, mapKey, and dw::core::Widget::queueDraw().
Referenced by Html_tag_close_map().
|
inlinevirtual |
Reimplemented from dw::core::Widget.
|
inline |
|
protectedvirtual |
Simple variant, to be implemented by widgets with extremes not depending on positions.
Reimplemented from dw::core::Widget.
Definition at line 242 of file image.cc.
References dw::core::Extremes::adjustmentWidth, dw::core::style::isPerLength(), layout, dw::core::Extremes::maxWidth, dw::core::Extremes::maxWidthIntrinsic, lout::misc::min(), dw::core::Extremes::minWidth, and dw::core::Extremes::minWidthIntrinsic.
|
virtual |
Return an iterator for this widget.
mask can narrow the types returned by the iterator, this can enhance performance quite much, e.g. when only searching for child widgets.
With atEnd == false, the iterator starts before the beginning, i.e. the first call of dw::core::Iterator::next will let the iterator point on the first piece of contents. Likewise, With atEnd == true, the iterator starts after the last piece of contents, call dw::core::Iterator::prev in this case.
Implements dw::core::Widget.
|
protectedvirtual |
|
protectedvirtual |
Reimplemented from dw::core::Widget.
Definition at line 356 of file image.cc.
References dw::core::style::CURSOR_POINTER, and layout.
|
virtual |
Called, when an image buffer is attached.
This is typically the case when all meta data (size, depth) has been read.
Implements dw::core::ImgRenderer.
Definition at line 486 of file image.cc.
References DBG_OBJ_ASSOC_CHILD, DBG_OBJ_SET_NUM, dw::core::Imgbuf::getRootHeight(), dw::core::Imgbuf::getRootWidth(), dw::core::Imgbuf::getScaledBuf(), dw::core::Imgbuf::ref(), and dw::core::Imgbuf::unref().
Referenced by imageInitTimeout(), imageInitTimeout(), and imageInitTimeout().
void dw::Image::setIsMap | ( | ) |
Sets image as server side image map.
Definition at line 540 of file image.cc.
Referenced by Html_tag_content_img().
void dw::Image::setUseMap | ( | ImageMapsList * | list, |
object::Object * | key | ||
) |
Sets image as client side image map.
"list" is not owned by the image, the caller has to free it. "key" is owned by the image, if it is used by the caller afterwards, a copy should be passed.
Definition at line 553 of file image.cc.
Referenced by Html_tag_content_img().
|
protectedvirtual |
Reimplemented from dw::core::Widget.
Definition at line 275 of file image.cc.
References dw::core::Allocation::ascent, DBG_OBJ_ASSOC_CHILD, DBG_OBJ_ENTER, DBG_OBJ_LEAVE, DBG_OBJ_MSG, DBG_OBJ_SET_NUM, dw::core::Allocation::descent, dw::core::Imgbuf::getScaledBuf(), dw::core::Imgbuf::unref(), dw::core::Allocation::width, dw::core::Allocation::x, and dw::core::Allocation::y.
|
protectedvirtual |
Simple variant, to be implemented by widgets with sizes not depending on positions.
Reimplemented from dw::core::Widget.
Definition at line 176 of file image.cc.
References dw::core::Requisition::ascent, DBG_OBJ_ENTER0, DBG_OBJ_LEAVE, DBG_OBJ_MSGF, dw::core::Requisition::descent, layout, dw::core::style::LENGTH_AUTO, dw::core::splitHeightPreserveDescent(), and dw::core::Requisition::width.
|
private |
Definition at line 123 of file image.hh.
Referenced by forceMapRedraw(), and getBuffer().
|
private |
Definition at line 129 of file image.hh.
Referenced by forceMapRedraw().
|
private |