summaryrefslogtreecommitdiff
path: root/indra/llui/llviewquery.h
diff options
context:
space:
mode:
Diffstat (limited to 'indra/llui/llviewquery.h')
-rw-r--r--indra/llui/llviewquery.h274
1 files changed, 137 insertions, 137 deletions
diff --git a/indra/llui/llviewquery.h b/indra/llui/llviewquery.h
index 2fc7fc476a..59c580c08d 100644
--- a/indra/llui/llviewquery.h
+++ b/indra/llui/llviewquery.h
@@ -1,137 +1,137 @@
-/**
- * @file llviewquery.h
- * @brief Query algorithm for flattening and filtering the view hierarchy.
- *
- * $LicenseInfo:firstyear=2001&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2010, Linden Research, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License only.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
- * $/LicenseInfo$
- */
-
-#ifndef LL_LLVIEWQUERY_H
-#define LL_LLVIEWQUERY_H
-
-#include <list>
-
-#include "llsingleton.h"
-#include "llui.h"
-
-class LLView;
-
-typedef std::list<LLView *> viewList_t;
-typedef std::pair<BOOL, BOOL> filterResult_t;
-
-// Abstract base class for all query filters.
-class LLQueryFilter
-{
-public:
- virtual ~LLQueryFilter() {};
- virtual filterResult_t operator() (const LLView* const view, const viewList_t & children) const = 0;
-};
-
-class LLQuerySorter
-{
-public:
- virtual ~LLQuerySorter() {};
- virtual void sort(LLView * parent, viewList_t &children) const;
-};
-
-class LLLeavesFilter : public LLQueryFilter, public LLSingleton<LLLeavesFilter>
-{
- LLSINGLETON_EMPTY_CTOR(LLLeavesFilter);
- /*virtual*/ filterResult_t operator() (const LLView* const view, const viewList_t & children) const override;
-};
-
-class LLRootsFilter : public LLQueryFilter, public LLSingleton<LLRootsFilter>
-{
- LLSINGLETON_EMPTY_CTOR(LLRootsFilter);
- /*virtual*/ filterResult_t operator() (const LLView* const view, const viewList_t & children) const override;
-};
-
-class LLVisibleFilter : public LLQueryFilter, public LLSingleton<LLVisibleFilter>
-{
- LLSINGLETON_EMPTY_CTOR(LLVisibleFilter);
- /*virtual*/ filterResult_t operator() (const LLView* const view, const viewList_t & children) const override;
-};
-
-class LLEnabledFilter : public LLQueryFilter, public LLSingleton<LLEnabledFilter>
-{
- LLSINGLETON_EMPTY_CTOR(LLEnabledFilter);
- /*virtual*/ filterResult_t operator() (const LLView* const view, const viewList_t & children) const override;
-};
-
-class LLTabStopFilter : public LLQueryFilter, public LLSingleton<LLTabStopFilter>
-{
- LLSINGLETON_EMPTY_CTOR(LLTabStopFilter);
- /*virtual*/ filterResult_t operator() (const LLView* const view, const viewList_t & children) const override;
-};
-
-class LLCtrlFilter : public LLQueryFilter, public LLSingleton<LLCtrlFilter>
-{
- LLSINGLETON_EMPTY_CTOR(LLCtrlFilter);
- /*virtual*/ filterResult_t operator() (const LLView* const view, const viewList_t & children) const override;
-};
-
-template <class T>
-class LLWidgetTypeFilter : public LLQueryFilter
-{
- /*virtual*/ filterResult_t operator() (const LLView* const view, const viewList_t & children) const
- {
- return filterResult_t(dynamic_cast<const T*>(view) != NULL, TRUE);
- }
-
-};
-
-// Algorithm for flattening
-class LLViewQuery
-{
-public:
- typedef std::list<const LLQueryFilter*> filterList_t;
- typedef filterList_t::iterator filterList_iter_t;
- typedef filterList_t::const_iterator filterList_const_iter_t;
-
- LLViewQuery() : mPreFilters(), mPostFilters(), mSorterp() {}
- virtual ~LLViewQuery() {}
-
- void addPreFilter(const LLQueryFilter* prefilter) { mPreFilters.push_back(prefilter); }
- void addPostFilter(const LLQueryFilter* postfilter) { mPostFilters.push_back(postfilter); }
- const filterList_t & getPreFilters() const { return mPreFilters; }
- const filterList_t & getPostFilters() const { return mPostFilters; }
-
- void setSorter(const LLQuerySorter* sorter) { mSorterp = sorter; }
- const LLQuerySorter* getSorter() const { return mSorterp; }
-
- viewList_t run(LLView * view) const;
- // syntactic sugar
- viewList_t operator () (LLView * view) const { return run(view); }
-
- // override this method to provide iteration over other types of children
- virtual void filterChildren(LLView * view, viewList_t& filtered_children) const;
-
-private:
-
- filterResult_t runFilters(LLView * view, const viewList_t children, const filterList_t filters) const;
-
- filterList_t mPreFilters;
- filterList_t mPostFilters;
- const LLQuerySorter* mSorterp;
-};
-
-
-#endif // LL_LLVIEWQUERY_H
+/**
+ * @file llviewquery.h
+ * @brief Query algorithm for flattening and filtering the view hierarchy.
+ *
+ * $LicenseInfo:firstyear=2001&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2010, Linden Research, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
+ * $/LicenseInfo$
+ */
+
+#ifndef LL_LLVIEWQUERY_H
+#define LL_LLVIEWQUERY_H
+
+#include <list>
+
+#include "llsingleton.h"
+#include "llui.h"
+
+class LLView;
+
+typedef std::list<LLView *> viewList_t;
+typedef std::pair<bool, bool> filterResult_t;
+
+// Abstract base class for all query filters.
+class LLQueryFilter
+{
+public:
+ virtual ~LLQueryFilter() {};
+ virtual filterResult_t operator() (const LLView* const view, const viewList_t & children) const = 0;
+};
+
+class LLQuerySorter
+{
+public:
+ virtual ~LLQuerySorter() {};
+ virtual void sort(LLView * parent, viewList_t &children) const;
+};
+
+class LLLeavesFilter : public LLQueryFilter, public LLSingleton<LLLeavesFilter>
+{
+ LLSINGLETON_EMPTY_CTOR(LLLeavesFilter);
+ /*virtual*/ filterResult_t operator() (const LLView* const view, const viewList_t & children) const override;
+};
+
+class LLRootsFilter : public LLQueryFilter, public LLSingleton<LLRootsFilter>
+{
+ LLSINGLETON_EMPTY_CTOR(LLRootsFilter);
+ /*virtual*/ filterResult_t operator() (const LLView* const view, const viewList_t & children) const override;
+};
+
+class LLVisibleFilter : public LLQueryFilter, public LLSingleton<LLVisibleFilter>
+{
+ LLSINGLETON_EMPTY_CTOR(LLVisibleFilter);
+ /*virtual*/ filterResult_t operator() (const LLView* const view, const viewList_t & children) const override;
+};
+
+class LLEnabledFilter : public LLQueryFilter, public LLSingleton<LLEnabledFilter>
+{
+ LLSINGLETON_EMPTY_CTOR(LLEnabledFilter);
+ /*virtual*/ filterResult_t operator() (const LLView* const view, const viewList_t & children) const override;
+};
+
+class LLTabStopFilter : public LLQueryFilter, public LLSingleton<LLTabStopFilter>
+{
+ LLSINGLETON_EMPTY_CTOR(LLTabStopFilter);
+ /*virtual*/ filterResult_t operator() (const LLView* const view, const viewList_t & children) const override;
+};
+
+class LLCtrlFilter : public LLQueryFilter, public LLSingleton<LLCtrlFilter>
+{
+ LLSINGLETON_EMPTY_CTOR(LLCtrlFilter);
+ /*virtual*/ filterResult_t operator() (const LLView* const view, const viewList_t & children) const override;
+};
+
+template <class T>
+class LLWidgetTypeFilter : public LLQueryFilter
+{
+ /*virtual*/ filterResult_t operator() (const LLView* const view, const viewList_t & children) const
+ {
+ return filterResult_t(dynamic_cast<const T*>(view) != NULL, true);
+ }
+
+};
+
+// Algorithm for flattening
+class LLViewQuery
+{
+public:
+ typedef std::list<const LLQueryFilter*> filterList_t;
+ typedef filterList_t::iterator filterList_iter_t;
+ typedef filterList_t::const_iterator filterList_const_iter_t;
+
+ LLViewQuery() : mPreFilters(), mPostFilters(), mSorterp() {}
+ virtual ~LLViewQuery() {}
+
+ void addPreFilter(const LLQueryFilter* prefilter) { mPreFilters.push_back(prefilter); }
+ void addPostFilter(const LLQueryFilter* postfilter) { mPostFilters.push_back(postfilter); }
+ const filterList_t & getPreFilters() const { return mPreFilters; }
+ const filterList_t & getPostFilters() const { return mPostFilters; }
+
+ void setSorter(const LLQuerySorter* sorter) { mSorterp = sorter; }
+ const LLQuerySorter* getSorter() const { return mSorterp; }
+
+ viewList_t run(LLView * view) const;
+ // syntactic sugar
+ viewList_t operator () (LLView * view) const { return run(view); }
+
+ // override this method to provide iteration over other types of children
+ virtual void filterChildren(LLView * view, viewList_t& filtered_children) const;
+
+private:
+
+ filterResult_t runFilters(LLView * view, const viewList_t children, const filterList_t filters) const;
+
+ filterList_t mPreFilters;
+ filterList_t mPostFilters;
+ const LLQuerySorter* mSorterp;
+};
+
+
+#endif // LL_LLVIEWQUERY_H