aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/views
diff options
context:
space:
mode:
authorGravatar Brian Osman <brianosman@google.com>2017-11-22 16:36:07 -0500
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2017-11-29 18:12:35 +0000
commitede860e91c2a0021266907885ea2c9b4be09e121 (patch)
tree65e11fcdab6d13d133fc881f38d3efda85402d92 /src/views
parent3f67914c01f32fe61fd0af5022ebfd4e19d68f0e (diff)
Delete even more unused views code
Bug: skia: Change-Id: I41480aa89dfcd8cb7e016e477cbabe354f35ce8a Reviewed-on: https://skia-review.googlesource.com/75480 Reviewed-by: Mike Reed <reed@google.com> Commit-Queue: Brian Osman <brianosman@google.com>
Diffstat (limited to 'src/views')
-rw-r--r--src/views/SkEvent.cpp135
-rw-r--r--src/views/SkView.cpp623
2 files changed, 3 insertions, 755 deletions
diff --git a/src/views/SkEvent.cpp b/src/views/SkEvent.cpp
index 8102455979..c2b800fe9e 100644
--- a/src/views/SkEvent.cpp
+++ b/src/views/SkEvent.cpp
@@ -5,18 +5,12 @@
* found in the LICENSE file.
*/
-
-#include "SkDOM.h"
#include "SkEvent.h"
void SkEvent::initialize(const char* type, size_t typeLen) {
fType = nullptr;
setType(type, typeLen);
f32 = 0;
-#ifdef SK_DEBUG
- fTime = 0;
- fNextEvent = nullptr;
-#endif
}
SkEvent::SkEvent()
@@ -113,132 +107,3 @@ void SkEvent::setType(const SkString& type)
{
setType(type.c_str());
}
-
-////////////////////////////////////////////////////////////////////////////
-
-#include "SkParse.h"
-
-void SkEvent::inflate(const SkDOM& dom, const SkDOM::Node* node)
-{
- const char* name = dom.findAttr(node, "type");
- if (name)
- this->setType(name);
-
- const char* value;
- if ((value = dom.findAttr(node, "fast32")) != nullptr)
- {
- int32_t n;
- if (SkParse::FindS32(value, &n))
- this->setFast32(n);
- }
-
- for (node = dom.getFirstChild(node); node; node = dom.getNextSibling(node))
- {
- if (strcmp(dom.getName(node), "data"))
- {
- SkDEBUGCODE(SkDebugf("SkEvent::inflate unrecognized subelement <%s>\n", dom.getName(node));)
- continue;
- }
-
- name = dom.findAttr(node, "name");
- if (name == nullptr)
- {
- SkDEBUGCODE(SkDebugf("SkEvent::inflate missing required \"name\" attribute in <data> subelement\n");)
- continue;
- }
-
- if ((value = dom.findAttr(node, "s32")) != nullptr)
- {
- int32_t n;
- if (SkParse::FindS32(value, &n))
- this->setS32(name, n);
- }
- else if ((value = dom.findAttr(node, "scalar")) != nullptr)
- {
- SkScalar x;
- if (SkParse::FindScalar(value, &x))
- this->setScalar(name, x);
- }
- else if ((value = dom.findAttr(node, "string")) != nullptr)
- this->setString(name, value);
-#ifdef SK_DEBUG
- else
- {
- SkDebugf("SkEvent::inflate <data name=\"%s\"> subelement missing required type attribute [S32 | scalar | string]\n", name);
- }
-#endif
- }
-}
-
-#ifdef SK_DEBUG
-
- #ifndef SkScalarToFloat
- #define SkScalarToFloat(x) ((x) / 65536.f)
- #endif
-
- void SkEvent::dump(const char title[])
- {
- if (title)
- SkDebugf("%s ", title);
-
- SkString etype;
- this->getType(&etype);
- SkDebugf("event<%s> fast32=%d", etype.c_str(), this->getFast32());
-
- const SkMetaData& md = this->getMetaData();
- SkMetaData::Iter iter(md);
- SkMetaData::Type mtype;
- int count;
- const char* name;
-
- while ((name = iter.next(&mtype, &count)) != nullptr)
- {
- SkASSERT(count > 0);
-
- SkDebugf(" <%s>=", name);
- switch (mtype) {
- case SkMetaData::kS32_Type: // vector version???
- {
- int32_t value;
- md.findS32(name, &value);
- SkDebugf("%d ", value);
- }
- break;
- case SkMetaData::kScalar_Type:
- {
- const SkScalar* values = md.findScalars(name, &count, nullptr);
- SkDebugf("%f", SkScalarToFloat(values[0]));
- for (int i = 1; i < count; i++)
- SkDebugf(", %f", SkScalarToFloat(values[i]));
- SkDebugf(" ");
- }
- break;
- case SkMetaData::kString_Type:
- {
- const char* value = md.findString(name);
- SkASSERT(value);
- SkDebugf("<%s> ", value);
- }
- break;
- case SkMetaData::kPtr_Type: // vector version???
- {
- void* value;
- md.findPtr(name, &value);
- SkDebugf("%p ", value);
- }
- break;
- case SkMetaData::kBool_Type: // vector version???
- {
- bool value;
- md.findBool(name, &value);
- SkDebugf("%s ", value ? "true" : "false");
- }
- break;
- default:
- SkDEBUGFAIL("unknown metadata type returned from iterator");
- break;
- }
- }
- SkDebugf("\n");
- }
-#endif
diff --git a/src/views/SkView.cpp b/src/views/SkView.cpp
index be765f1faf..4608c44406 100644
--- a/src/views/SkView.cpp
+++ b/src/views/SkView.cpp
@@ -7,7 +7,6 @@
#include "SkView.h"
#include "SkCanvas.h"
-#include "SkDOM.h"
static inline uint32_t SkSetClearShift(uint32_t bits, bool cond, unsigned shift) {
SkASSERT((int)cond == 0 || (int)cond == 1);
@@ -18,29 +17,13 @@ static inline uint32_t SkSetClearShift(uint32_t bits, bool cond, unsigned shift)
SkView::SkView(uint32_t flags) : fFlags(SkToU8(flags)) {
fWidth = fHeight = 0;
- fLoc.set(0, 0);
- fParent = fFirstChild = fNextSibling = fPrevSibling = nullptr;
- fMatrix.setIdentity();
- fContainsFocus = 0;
}
-SkView::~SkView() {
- this->detachAllChildren();
-}
+SkView::~SkView() {}
void SkView::setFlags(uint32_t flags) {
SkASSERT((flags & ~kAllFlagMasks) == 0);
-
- uint32_t diff = fFlags ^ flags;
-
- if (diff & kVisible_Mask)
- this->inval(nullptr);
-
fFlags = SkToU8(flags);
-
- if (diff & kVisible_Mask) {
- this->inval(nullptr);
- }
}
void SkView::setVisibleP(bool pred) {
@@ -65,37 +48,16 @@ void SkView::setSize(SkScalar width, SkScalar height) {
if (fWidth != width || fHeight != height)
{
- this->inval(nullptr);
fWidth = width;
fHeight = height;
- this->inval(nullptr);
this->onSizeChange();
}
}
-void SkView::setLoc(SkScalar x, SkScalar y) {
- if (fLoc.fX != x || fLoc.fY != y) {
- this->inval(nullptr);
- fLoc.set(x, y);
- this->inval(nullptr);
- }
-}
-
-void SkView::offset(SkScalar dx, SkScalar dy) {
- if (dx || dy)
- this->setLoc(fLoc.fX + dx, fLoc.fY + dy);
-}
-
-void SkView::setLocalMatrix(const SkMatrix& matrix) {
- this->inval(nullptr);
- fMatrix = matrix;
- this->inval(nullptr);
-}
-
void SkView::draw(SkCanvas* canvas) {
if (fWidth && fHeight && this->isVisible()) {
SkRect r;
- r.set(fLoc.fX, fLoc.fY, fLoc.fX + fWidth, fLoc.fY + fHeight);
+ r.set(0, 0, fWidth, fHeight);
if (this->isClipToBounds() && canvas->quickReject(r)) {
return;
}
@@ -106,269 +68,26 @@ void SkView::draw(SkCanvas* canvas) {
canvas->clipRect(r);
}
- canvas->translate(fLoc.fX, fLoc.fY);
- canvas->concat(fMatrix);
-
- if (fParent) {
- fParent->beforeChild(this, canvas);
- }
-
int sc = canvas->save();
this->onDraw(canvas);
canvas->restoreToCount(sc);
-
- if (fParent) {
- fParent->afterChild(this, canvas);
- }
-
- B2FIter iter(this);
- SkView* child;
-
- SkCanvas* childCanvas = this->beforeChildren(canvas);
-
- while ((child = iter.next()) != nullptr)
- child->draw(childCanvas);
-
- this->afterChildren(canvas);
- }
-}
-
-void SkView::inval(SkRect* rect) {
- SkView* view = this;
- SkRect storage;
-
- for (;;) {
- if (!view->isVisible()) {
- return;
- }
- if (view->isClipToBounds()) {
- SkRect bounds;
- view->getLocalBounds(&bounds);
- if (rect && !bounds.intersect(*rect)) {
- return;
- }
- storage = bounds;
- rect = &storage;
- }
- if (view->handleInval(rect)) {
- return;
- }
-
- SkView* parent = view->fParent;
- if (parent == nullptr) {
- return;
- }
-
- if (rect) {
- rect->offset(view->fLoc.fX, view->fLoc.fY);
- }
- view = parent;
}
}
////////////////////////////////////////////////////////////////////////////
-bool SkView::setFocusView(SkView* fv) {
- SkView* view = this;
-
- do {
- if (view->onSetFocusView(fv)) {
- return true;
- }
- } while ((view = view->fParent) != nullptr);
- return false;
-}
-
-SkView* SkView::getFocusView() const {
- SkView* focus = nullptr;
- const SkView* view = this;
- do {
- if (view->onGetFocusView(&focus)) {
- break;
- }
- } while ((view = view->fParent) != nullptr);
- return focus;
-}
-
-bool SkView::hasFocus() const {
- return this == this->getFocusView();
-}
-
-bool SkView::acceptFocus() {
- return this->isFocusable() && this->setFocusView(this);
-}
-
-/*
- Try to give focus to this view, or its children
-*/
-SkView* SkView::acceptFocus(FocusDirection dir) {
- if (dir == kNext_FocusDirection) {
- if (this->acceptFocus()) {
- return this;
- }
- B2FIter iter(this);
- SkView* child, *focus;
- while ((child = iter.next()) != nullptr) {
- if ((focus = child->acceptFocus(dir)) != nullptr) {
- return focus;
- }
- }
- } else { // prev
- F2BIter iter(this);
- SkView* child, *focus;
- while ((child = iter.next()) != nullptr) {
- if ((focus = child->acceptFocus(dir)) != nullptr) {
- return focus;
- }
- }
- if (this->acceptFocus()) {
- return this;
- }
- }
- return nullptr;
-}
-
-SkView* SkView::moveFocus(FocusDirection dir) {
- SkView* focus = this->getFocusView();
-
- if (focus == nullptr) { // start with the root
- focus = this;
- while (focus->fParent) {
- focus = focus->fParent;
- }
- }
-
- SkView* child, *parent;
-
- if (dir == kNext_FocusDirection) {
- parent = focus;
- child = focus->fFirstChild;
- if (child)
- goto FIRST_CHILD;
- else
- goto NEXT_SIB;
-
- do {
- while (child != parent->fFirstChild) {
- FIRST_CHILD:
- if ((focus = child->acceptFocus(dir)) != nullptr)
- return focus;
- child = child->fNextSibling;
- }
- NEXT_SIB:
- child = parent->fNextSibling;
- parent = parent->fParent;
- } while (parent != nullptr);
- } else { // prevfocus
- parent = focus->fParent;
- if (parent == nullptr) { // we're the root
- return focus->acceptFocus(dir);
- } else {
- child = focus;
- while (parent) {
- while (child != parent->fFirstChild) {
- child = child->fPrevSibling;
- if ((focus = child->acceptFocus(dir)) != nullptr) {
- return focus;
- }
- }
- if (parent->acceptFocus()) {
- return parent;
- }
- child = parent;
- parent = parent->fParent;
- }
- }
- }
- return nullptr;
-}
-
-void SkView::onFocusChange(bool gainFocusP) {
- this->inval(nullptr);
-}
-
-////////////////////////////////////////////////////////////////////////////
-
SkView::Click::Click(SkView* target) {
SkASSERT(target);
fTargetID = target->getSinkID();
- fType = nullptr;
- fWeOwnTheType = false;
- fOwner = nullptr;
-}
-
-SkView::Click::~Click() {
- this->resetType();
-}
-
-void SkView::Click::resetType() {
- if (fWeOwnTheType) {
- sk_free(fType);
- fWeOwnTheType = false;
- }
- fType = nullptr;
-}
-
-bool SkView::Click::isType(const char type[]) const {
- const char* t = fType;
-
- if (type == t) {
- return true;
- }
- if (type == nullptr) {
- type = "";
- }
- if (t == nullptr) {
- t = "";
- }
- return !strcmp(t, type);
}
-void SkView::Click::setType(const char type[]) {
- this->resetType();
- fType = (char*)type;
-}
-
-void SkView::Click::copyType(const char type[]) {
- if (fType != type) {
- this->resetType();
- if (type) {
- size_t len = strlen(type) + 1;
- fType = (char*)sk_malloc_throw(len);
- memcpy(fType, type, len);
- fWeOwnTheType = true;
- }
- }
-}
+SkView::Click::~Click() {}
SkView::Click* SkView::findClickHandler(SkScalar x, SkScalar y, unsigned modi) {
if (x < 0 || y < 0 || x >= fWidth || y >= fHeight) {
return nullptr;
}
- if (this->onSendClickToChildren(x, y, modi)) {
- F2BIter iter(this);
- SkView* child;
-
- while ((child = iter.next()) != nullptr) {
- SkPoint p;
-#if 0
- if (!child->globalToLocal(x, y, &p)) {
- continue;
- }
-#else
- // the above seems broken, so just respecting fLoc for now <reed>
- p.set(x - child->fLoc.x(), y - child->fLoc.y());
-#endif
-
- Click* click = child->findClickHandler(p.fX, p.fY, modi);
-
- if (click) {
- return click;
- }
- }
- }
-
return this->onFindClickHandler(x, y, modi);
}
@@ -384,10 +103,6 @@ void SkView::DoClickDown(Click* click, int x, int y, unsigned modi) {
click->fICurr = click->fIPrev = click->fIOrig;
click->fOrig.iset(x, y);
- if (!target->globalToLocal(&click->fOrig)) {
- // no history to let us recover from this failure
- return;
- }
click->fPrev = click->fCurr = click->fOrig;
click->fState = Click::kDown_State;
@@ -408,10 +123,6 @@ void SkView::DoClickMoved(Click* click, int x, int y, unsigned modi) {
click->fPrev = click->fCurr;
click->fCurr.iset(x, y);
- if (!target->globalToLocal(&click->fCurr)) {
- // on failure pretend the mouse didn't move
- click->fCurr = click->fPrev;
- }
click->fState = Click::kMoved_State;
click->fModifierKeys = modi;
@@ -431,10 +142,6 @@ void SkView::DoClickUp(Click* click, int x, int y, unsigned modi) {
click->fPrev = click->fCurr;
click->fCurr.iset(x, y);
- if (!target->globalToLocal(&click->fCurr)) {
- // on failure pretend the mouse didn't move
- click->fCurr = click->fPrev;
- }
click->fState = Click::kUp_State;
click->fModifierKeys = modi;
@@ -447,10 +154,6 @@ void SkView::onDraw(SkCanvas* canvas) {}
void SkView::onSizeChange() {}
-bool SkView::onSendClickToChildren(SkScalar x, SkScalar y, unsigned modi) {
- return true;
-}
-
SkView::Click* SkView::onFindClickHandler(SkScalar x, SkScalar y, unsigned modi) {
return nullptr;
}
@@ -458,323 +161,3 @@ SkView::Click* SkView::onFindClickHandler(SkScalar x, SkScalar y, unsigned modi)
bool SkView::onClick(Click*) {
return false;
}
-
-bool SkView::handleInval(const SkRect*) {
- return false;
-}
-
-//////////////////////////////////////////////////////////////////////
-
-void SkView::getLocalBounds(SkRect* bounds) const {
- if (bounds) {
- bounds->set(0, 0, fWidth, fHeight);
- }
-}
-
-//////////////////////////////////////////////////////////////////////
-//////////////////////////////////////////////////////////////////////
-
-void SkView::detachFromParent_NoLayout() {
- this->validate();
- if (fParent == nullptr) {
- return;
- }
-
- if (fContainsFocus) {
- (void)this->setFocusView(nullptr);
- }
-
- this->inval(nullptr);
-
- SkView* next = nullptr;
-
- if (fNextSibling != this) { // do we have any siblings
- fNextSibling->fPrevSibling = fPrevSibling;
- fPrevSibling->fNextSibling = fNextSibling;
- next = fNextSibling;
- }
-
- if (fParent->fFirstChild == this) {
- fParent->fFirstChild = next;
- }
-
- fParent = fNextSibling = fPrevSibling = nullptr;
-
- this->validate();
- this->unref();
-}
-
-void SkView::detachFromParent() {
- this->validate();
- SkView* parent = fParent;
-
- if (parent) {
- this->detachFromParent_NoLayout();
- }
-}
-
-SkView* SkView::attachChildToBack(SkView* child) {
- this->validate();
- SkASSERT(child != this);
-
- if (child == nullptr || fFirstChild == child)
- goto DONE;
-
- child->ref();
- child->detachFromParent_NoLayout();
-
- if (fFirstChild == nullptr) {
- child->fNextSibling = child;
- child->fPrevSibling = child;
- } else {
- child->fNextSibling = fFirstChild;
- child->fPrevSibling = fFirstChild->fPrevSibling;
- fFirstChild->fPrevSibling->fNextSibling = child;
- fFirstChild->fPrevSibling = child;
- }
-
- fFirstChild = child;
- child->fParent = this;
- child->inval(nullptr);
-
- this->validate();
-DONE:
- return child;
-}
-
-SkView* SkView::attachChildToFront(SkView* child) {
- this->validate();
- SkASSERT(child != this);
-
- if (child == nullptr || (fFirstChild && fFirstChild->fPrevSibling == child))
- goto DONE;
-
- child->ref();
- child->detachFromParent_NoLayout();
-
- if (fFirstChild == nullptr) {
- fFirstChild = child;
- child->fNextSibling = child;
- child->fPrevSibling = child;
- } else {
- child->fNextSibling = fFirstChild;
- child->fPrevSibling = fFirstChild->fPrevSibling;
- fFirstChild->fPrevSibling->fNextSibling = child;
- fFirstChild->fPrevSibling = child;
- }
-
- child->fParent = this;
- child->inval(nullptr);
-
- this->validate();
-DONE:
- return child;
-}
-
-void SkView::detachAllChildren() {
- this->validate();
- while (fFirstChild)
- fFirstChild->detachFromParent_NoLayout();
-}
-
-void SkView::localToGlobal(SkMatrix* matrix) const {
- if (matrix) {
- matrix->reset();
- const SkView* view = this;
- while (view)
- {
- matrix->preConcat(view->getLocalMatrix());
- matrix->preTranslate(-view->fLoc.fX, -view->fLoc.fY);
- view = view->fParent;
- }
- }
-}
-
-bool SkView::globalToLocal(SkScalar x, SkScalar y, SkPoint* local) const {
- if (local) {
- SkMatrix m;
- this->localToGlobal(&m);
- if (!m.invert(&m)) {
- return false;
- }
- SkPoint p;
- m.mapXY(x, y, &p);
- local->set(p.fX, p.fY);
- }
-
- return true;
-}
-
-//////////////////////////////////////////////////////////////////
-
-/* Even if the subclass overrides onInflate, they should always be
- sure to call the inherited method, so that we get called.
-*/
-void SkView::onInflate(const SkDOM& dom, const SkDOM::Node* node) {
- SkScalar x, y;
-
- x = this->locX();
- y = this->locY();
- (void)dom.findScalar(node, "x", &x);
- (void)dom.findScalar(node, "y", &y);
- this->setLoc(x, y);
-
- x = this->width();
- y = this->height();
- (void)dom.findScalar(node, "width", &x);
- (void)dom.findScalar(node, "height", &y);
- this->setSize(x, y);
-
- // inflate the flags
-
- static const char* gFlagNames[] = {
- "visible", "enabled", "focusable", "flexH", "flexV"
- };
- SkASSERT(SK_ARRAY_COUNT(gFlagNames) == kFlagShiftCount);
-
- bool b;
- uint32_t flags = this->getFlags();
- for (unsigned i = 0; i < SK_ARRAY_COUNT(gFlagNames); i++) {
- if (dom.findBool(node, gFlagNames[i], &b)) {
- flags = SkSetClearShift(flags, b, i);
- }
- }
- this->setFlags(flags);
-}
-
-void SkView::inflate(const SkDOM& dom, const SkDOM::Node* node) {
- this->onInflate(dom, node);
-}
-
-//////////////////////////////////////////////////////////////////
-
-SkView* SkView::sendEventToParents(const SkEvent& evt) {
- SkView* parent = fParent;
-
- while (parent) {
- if (parent->doEvent(evt)) {
- return parent;
- }
- parent = parent->fParent;
- }
- return nullptr;
-}
-
-SkView* SkView::sendQueryToParents(SkEvent* evt) {
- SkView* parent = fParent;
-
- while (parent) {
- if (parent->doQuery(evt)) {
- return parent;
- }
- parent = parent->fParent;
- }
- return nullptr;
-}
-
-//////////////////////////////////////////////////////////////////
-//////////////////////////////////////////////////////////////////
-
-SkView::F2BIter::F2BIter(const SkView* parent) {
- fFirstChild = parent ? parent->fFirstChild : nullptr;
- fChild = fFirstChild ? fFirstChild->fPrevSibling : nullptr;
-}
-
-SkView* SkView::F2BIter::next() {
- SkView* curr = fChild;
-
- if (fChild) {
- if (fChild == fFirstChild) {
- fChild = nullptr;
- } else {
- fChild = fChild->fPrevSibling;
- }
- }
- return curr;
-}
-
-SkView::B2FIter::B2FIter(const SkView* parent) {
- fFirstChild = parent ? parent->fFirstChild : nullptr;
- fChild = fFirstChild;
-}
-
-SkView* SkView::B2FIter::next() {
- SkView* curr = fChild;
-
- if (fChild) {
- SkView* next = fChild->fNextSibling;
- if (next == fFirstChild)
- next = nullptr;
- fChild = next;
- }
- return curr;
-}
-
-//////////////////////////////////////////////////////////////////
-//////////////////////////////////////////////////////////////////
-
-#ifdef SK_DEBUG
-
-void SkView::validate() const {
-// SkASSERT(this->getRefCnt() > 0 && this->getRefCnt() < 100);
- if (fParent) {
- SkASSERT(fNextSibling);
- SkASSERT(fPrevSibling);
- } else {
- bool nextNull = nullptr == fNextSibling;
- bool prevNull = nullptr == fNextSibling;
- SkASSERT(nextNull == prevNull);
- }
-}
-
-static inline void show_if_nonzero(const char name[], SkScalar value) {
- if (value) {
- SkDebugf("%s=\"%g\"", name, value/65536.);
- }
-}
-
-static void tab(int level) {
- for (int i = 0; i < level; i++) {
- SkDebugf(" ");
- }
-}
-
-static void dumpview(const SkView* view, int level, bool recurse) {
- tab(level);
-
- SkDebugf("<view");
- show_if_nonzero(" x", view->locX());
- show_if_nonzero(" y", view->locY());
- show_if_nonzero(" width", view->width());
- show_if_nonzero(" height", view->height());
-
- if (recurse) {
- SkView::B2FIter iter(view);
- SkView* child;
- bool noChildren = true;
-
- while ((child = iter.next()) != nullptr) {
- if (noChildren) {
- SkDebugf(">\n");
- }
- noChildren = false;
- dumpview(child, level + 1, true);
- }
-
- if (!noChildren) {
- tab(level);
- SkDebugf("</view>\n");
- } else {
- goto ONELINER;
- }
- } else {
- ONELINER:
- SkDebugf(" />\n");
- }
-}
-
-void SkView::dump(bool recurse) const {
- dumpview(this, 0, recurse);
-}
-
-#endif