From ede860e91c2a0021266907885ea2c9b4be09e121 Mon Sep 17 00:00:00 2001 From: Brian Osman Date: Wed, 22 Nov 2017 16:36:07 -0500 Subject: Delete even more unused views code Bug: skia: Change-Id: I41480aa89dfcd8cb7e016e477cbabe354f35ce8a Reviewed-on: https://skia-review.googlesource.com/75480 Reviewed-by: Mike Reed Commit-Queue: Brian Osman --- src/views/SkEvent.cpp | 135 ----------- src/views/SkView.cpp | 623 +------------------------------------------------- 2 files changed, 3 insertions(+), 755 deletions(-) (limited to 'src/views') 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 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 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 - 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("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("\n"); - } else { - goto ONELINER; - } - } else { - ONELINER: - SkDebugf(" />\n"); - } -} - -void SkView::dump(bool recurse) const { - dumpview(this, 0, recurse); -} - -#endif -- cgit v1.2.3