ZFFramework
 
Loading...
Searching...
No Matches
ZFProtocolZFUIScrollView.h
Go to the documentation of this file.
1
5
6#ifndef _ZFI_ZFProtocolZFUIScrollView_h_
7#define _ZFI_ZFProtocolZFUIScrollView_h_
8
9#include "ZFCore/ZFProtocol.h"
10#include "../ZFUIScrollView.h"
12
14extern ZFLIB_ZFUIKit zftimet _ZFP_ZFProtocolZFUIScrollView_scrollAnimationStart(
16 , ZF_IN ZFUIScrollView *scrollView
17 , ZF_IN zftimet recommendTimerInterval
18 );
19extern ZFLIB_ZFUIKit void _ZFP_ZFProtocolZFUIScrollView_scrollAnimationStop(
21 , ZF_IN ZFUIScrollView *scrollView
22 );
23
28public:
37
38public:
42 virtual void scrollEnable(
43 ZF_IN ZFUIScrollView *scrollView
54 virtual void scrollBounce(
55 ZF_IN ZFUIScrollView *scrollView
56 , ZF_IN zfbool scrollBounceHorizontal
57 , ZF_IN zfbool scrollBounceVertical
58 , ZF_IN zfbool scrollBounceHorizontalAlways
59 , ZF_IN zfbool scrollBounceVerticalAlways
73 virtual void scrollContentFrame(
74 ZF_IN ZFUIScrollView *scrollView
75 , ZF_IN const ZFUIRect &frame
81 ZF_IN ZFUIScrollView *scrollView
82 , ZF_IN const ZFUIRect &frame
83 ) {
84 ZFUIRect frameNew = ZFUIRectApplyScaleReversely(frame, scrollView->UIScaleFixed());
85 frameNew.x -= scrollView->scrollAreaMargin().left;
86 frameNew.y -= scrollView->scrollAreaMargin().top;
87 scrollView->_ZFP_ZFUIScrollView_scrollContentFrameByImpl(frameNew);
88 }
89
103 ZF_IN ZFUIScrollView *scrollView
104 , ZF_IN zftimet recommendTimerInterval
105 ) {
106 return _ZFP_ZFProtocolZFUIScrollView_scrollAnimationStart(this, scrollView, recommendTimerInterval);
107 }
108
111 virtual void scrollAnimationStop(ZF_IN ZFUIScrollView *scrollView) {
112 _ZFP_ZFProtocolZFUIScrollView_scrollAnimationStop(this, scrollView);
113 }
114
115 // ============================================================
116 // children
117public:
125 virtual void scrollChildAdd(
126 ZF_IN ZFUIScrollView *parent
127 , ZF_IN ZFUIView *child
128 , ZF_IN zfindex atIndex
136 virtual void scrollChildRemove(
137 ZF_IN ZFUIScrollView *parent
138 , ZF_IN ZFUIView *child
139 , ZF_IN zfindex atIndex
147
148 // ============================================================
149 // callbacks that implementations must notify
150public:
155 ZF_IN ZFUIScrollView *scrollView
156 , ZF_IN const ZFUIPoint &mousePos
157 , ZF_IN zftimet mouseTime
158 ) {
159 scrollView->_ZFP_ZFUIScrollView_notifyDragBegin(ZFUIPointApplyScaleReversely(mousePos, scrollView->UIScaleFixed()), mouseTime);
160 }
161
165 ZF_IN ZFUIScrollView *scrollView
166 , ZF_IN const ZFUIPoint &mousePos
167 , ZF_IN zftimet mouseTime
168 ) {
169 scrollView->_ZFP_ZFUIScrollView_notifyDrag(ZFUIPointApplyScaleReversely(mousePos, scrollView->UIScaleFixed()), mouseTime);
170 }
171
175 ZF_IN ZFUIScrollView *scrollView
176 , ZF_IN zftimet mouseTime
177 , ZF_IN zfbool needScrollAni
178 ) {
179 scrollView->_ZFP_ZFUIScrollView_notifyDragEnd(mouseTime, needScrollAni);
180 }
181
185 ZF_IN ZFUIScrollView *scrollView
186 , ZF_IN zftimet relativeTimeInMiliseconds
187 ) {
188 scrollView->_ZFP_ZFUIScrollView_notifyScrollAnimation(relativeTimeInMiliseconds);
189 }
191
192// ============================================================
196public:
197 virtual ~ZFUIScrollViewImplHelperProtocol(void) {}
198
199public:
208 virtual void mouseEventPos(
209 ZF_OUT ZFUIPoint &ret
210 , ZF_IN void *nativeMouseEvent
213 virtual void *mouseEventClone(
214 ZF_IN void *nativeMouseEvent
215 , ZF_IN_OPT zfbool changeMouseAction = zffalse
219 virtual void mouseEventCleanup(ZF_IN void *nativeMouseEvent) zfpurevirtual;
225 virtual void mouseEventForward(
226 ZF_IN void *nativeChild
227 , ZF_IN void *nativeMouseEvent
229
232 ZF_IN zffloat x
233 , ZF_IN zffloat y
238 virtual void *findTouchedChild(
239 ZF_IN zffloat x
240 , ZF_IN zffloat y
243 virtual void findTouchedChildCleanup(ZF_IN void *nativeChild) zfpurevirtual;
244
251 virtual void trackDelayStart(
252 ZF_IN zftimet timeoutMiliSeconds
254 );
257
265 ZF_IN void *nativeChild
266 , ZF_IN_OUT void *nativeMouseEvent
267 , ZF_IN zffloat const &xInParent
268 , ZF_IN zffloat const &yInParent
272 ZF_IN void *nativeChild
273 , ZF_IN_OUT void *nativeMouseEvent
274 , ZF_IN zffloat const &xInChild
275 , ZF_IN zffloat const &yInChild
277};
278zfclassFwd _ZFP_ZFUIScrollViewImplHelperPrivate;
291zfclassNotPOD ZFLIB_ZFUIKit ZFUIScrollViewImplHelper {
292 ZFCLASS_DISALLOW_COPY_CONSTRUCTOR(ZFUIScrollViewImplHelper)
293
294public:
298 ZFUIScrollViewImplHelperProtocol *implProtocol;
301
302public:
305 ~ZFUIScrollViewImplHelper(void);
306
307public:
310 ZF_IN void *nativeMouseEvent
311 , ZF_IN ZFUIMouseAction mouseAction
312 );
315
316private:
317 _ZFP_ZFUIScrollViewImplHelperPrivate *d;
318 friend zfclassFwd _ZFP_ZFUIScrollViewImplHelperPrivate;
319 friend zfclassFwd ZFUIScrollViewImplHelperProtocol;
320 ZFTimer *_trackDelayDefaultImplTimer;
321};
322
324#endif // #ifndef _ZFI_ZFProtocolZFUIScrollView_h_
325
#define zffinal
dummy macro shows that a method or class is designed must not to be overrided
Definition ZFCoreTypeDef_ClassType.h:63
#define zfpurevirtual
dummy macro shows that a method is pure virtual method
Definition ZFCoreTypeDef_ClassType.h:68
#define ZF_IN
dummy macro that shows the param used as required input
Definition ZFCoreTypeDef_ClassType.h:184
#define ZF_IN_OPT
dummy macro that shows the param used as optional input
Definition ZFCoreTypeDef_ClassType.h:188
#define ZF_OUT
dummy macro that shows the param used as required output
Definition ZFCoreTypeDef_ClassType.h:192
#define zfclassNotPOD
shows the class is not a POD type, you should not memset it or declare it in stack or copy value by c...
Definition ZFCoreTypeDef_ClassType.h:48
#define ZF_IN_OUT
dummy macro that shows the param used as required input and output
Definition ZFCoreTypeDef_ClassType.h:200
#define ZFCLASS_DISALLOW_COPY_CONSTRUCTOR(ClassName)
a macro to show that a class doesn't allow copy constructor
Definition ZFCoreTypeDef_ClassType.h:81
#define zfclassFwd
forward declaration of a class type
Definition ZFCoreTypeDef_ClassType.h:31
_ZFT_t_zfbool zfbool
bool type
Definition ZFCoreTypeDef_CoreType.h:103
_ZFT_t_zfindex zfindex
similar to size_t, used for index and size only
Definition ZFCoreTypeDef_CoreType.h:154
_zft_zftimet zftimet
time unit, ensured at least 64 bit, ensured signed
Definition ZFCoreTypeDef_CoreType.h:203
_zft_zffloat zffloat
same as float, see zfindex
Definition ZFCoreTypeDef_CoreType.h:183
#define zffalse
bool false type
Definition ZFCoreTypeDef_CoreType.h:111
#define ZF_NAMESPACE_GLOBAL_BEGIN
begin namespace ZFFramework
Definition ZFNamespace.h:97
#define ZF_NAMESPACE_GLOBAL_END
end namespace ZFFramework
Definition ZFNamespace.h:98
protocol definitions for ZFFramework
#define ZFPROTOCOL_INTERFACE_END(ModuleName)
for more information, please refer to ZFPROTOCOL_INTERFACE_BEGIN
Definition ZFProtocol.h:412
#define ZFPROTOCOL_INTERFACE_CLASS(ModuleName)
access the class name of ZFProtocol for ModuleName
Definition ZFProtocol.h:217
#define ZFPROTOCOL_INTERFACE_BEGIN(ZFLIB_, ModuleName)
declare a protocol interface for ZFFramework
Definition ZFProtocol.h:406
#define ZFLIB_ZFUIKit
used to export symbols
Definition ZFUIKitDef.h:16
v_ZFUIMouseAction::ZFEnumType ZFUIMouseAction
see v_ZFUIMouseAction
Definition ZFUIMouseEvent.h:31
scroll view
ZFUIPoint ZFUIPointApplyScaleReversely(const ZFUIPoint &point, zffloat scale)
return a scaled point reversely
Definition ZFUITypeDef.h:137
ZFUIRect ZFUIRectApplyScaleReversely(const ZFUIRect &rect, zffloat scale)
return a scaled rect reversely
Definition ZFUITypeDef.h:859
void notifyScrollViewDrag(ZFUIScrollView *scrollView, const ZFUIPoint &mousePos, zftimet mouseTime)
see scrollContentFrame for how to implement scroll logic
Definition ZFProtocolZFUIScrollView.h:164
void notifyScrollViewDragBegin(ZFUIScrollView *scrollView, const ZFUIPoint &mousePos, zftimet mouseTime)
see scrollContentFrame for how to implement scroll logic
Definition ZFProtocolZFUIScrollView.h:154
virtual void scrollAnimationStop(ZFUIScrollView *scrollView)
see scrollAnimationStart
Definition ZFProtocolZFUIScrollView.h:111
void notifyScrollViewDragEnd(ZFUIScrollView *scrollView, zftimet mouseTime, zfbool needScrollAni)
see scrollContentFrame for how to implement scroll logic
Definition ZFProtocolZFUIScrollView.h:174
virtual void scrollChildRemoveAllForDealloc(ZFUIScrollView *parent)=0
called to remove all children during parent dealloc for performance
virtual void scrollEnable(ZFUIScrollView *scrollView, zfbool scrollEnable)=0
see ZFUIScrollView::scrollEnable
virtual void scrollChildAdd(ZFUIScrollView *parent, ZFUIView *child, zfindex atIndex)=0
add child view
virtual void * nativeScrollViewCreate(ZFUIScrollView *scrollView)=0
create native scroll view
virtual void scrollContentFrame(ZFUIScrollView *scrollView, const ZFUIRect &frame)=0
change content's frame
virtual void scrollBounce(ZFUIScrollView *scrollView, zfbool scrollBounceHorizontal, zfbool scrollBounceVertical, zfbool scrollBounceHorizontalAlways, zfbool scrollBounceVerticalAlways)=0
see ZFUIScrollView::scrollBounceHorizontal
void scrollContentFrameUpdateByImpl(ZFUIScrollView *scrollView, const ZFUIRect &frame)
for impl to update scroll content frame without activating any other event
Definition ZFProtocolZFUIScrollView.h:80
void notifyScrollViewScrollAnimation(ZFUIScrollView *scrollView, zftimet relativeTimeInMiliseconds)
see scrollAnimationStart for how to implement scroll animation logic
Definition ZFProtocolZFUIScrollView.h:184
virtual zftimet scrollAnimationStart(ZFUIScrollView *scrollView, zftimet recommendTimerInterval)
used to start scroll animation for performance
Definition ZFProtocolZFUIScrollView.h:102
virtual void nativeScrollViewDestroy(ZFUIScrollView *scrollView)=0
destroy native scroll view
virtual void scrollChildRemove(ZFUIScrollView *parent, ZFUIView *child, zfindex atIndex)=0
remove child view
timer utility
Definition ZFTimer.h:23
2D point
Definition ZFUITypeDef.h:62
2D rectangle
Definition ZFUITypeDef.h:636
zffloat y
y
Definition ZFUITypeDef.h:639
zffloat x
x
Definition ZFUITypeDef.h:638
native scroll view
Definition ZFUIScrollView.h:35
util class to achieve ZFUIScrollView's drag tracking logic
Definition ZFProtocolZFUIScrollView.h:291
zffloat nativeScrollTolerance
see ZFUIScrollViewImplHelper
Definition ZFProtocolZFUIScrollView.h:300
ZFUIScrollView * scrollView
see ZFUIScrollViewImplHelper
Definition ZFProtocolZFUIScrollView.h:296
void interceptMouse(void *nativeMouseEvent, ZFUIMouseAction mouseAction)
see ZFUIScrollViewImplHelper
void trackDelayNotifyTimeout(void)
see ZFUIScrollViewImplHelper
ZFUIScrollViewImplHelperProtocol * implProtocol
see ZFUIScrollViewImplHelper
Definition ZFProtocolZFUIScrollView.h:298
ZFUIScrollViewImplHelper(void)
see ZFUIScrollViewImplHelper
see ZFUIScrollViewImplHelper
Definition ZFProtocolZFUIScrollView.h:195
virtual ZFUIScrollViewImplHelper * findTouchedChildScrollView(zffloat x, zffloat y)=0
see ZFUIScrollViewImplHelper
virtual void trackDelayStart(zftimet timeoutMiliSeconds, ZFUIScrollViewImplHelper *owner)
see ZFUIScrollViewImplHelper, after time out, you must invoke ZFUIScrollViewImplHelper::trackDelayNot...
virtual void * translateFromParentToChild(void *nativeChild, void *nativeMouseEvent, zffloat const &xInParent, zffloat const &yInParent)=0
see ZFUIScrollViewImplHelper
virtual zftimet nativeTime(void)=0
see ZFUIScrollViewImplHelper
virtual void mouseEventPos(ZFUIPoint &ret, void *nativeMouseEvent)=0
see ZFUIScrollViewImplHelper
virtual void * findTouchedChild(zffloat x, zffloat y)=0
see ZFUIScrollViewImplHelper
virtual void trackDelayStop(ZFUIScrollViewImplHelper *owner)
see ZFUIScrollViewImplHelper
virtual void findTouchedChildCleanup(void *nativeChild)=0
see ZFUIScrollViewImplHelper
virtual void * mouseEventClone(void *nativeMouseEvent, zfbool changeMouseAction=_ZFT_t_zffalse, ZFUIMouseAction mouseAction=v_ZFUIMouseAction::e_Cancel)=0
see ZFUIScrollViewImplHelper
virtual void mouseEventCleanup(void *nativeMouseEvent)=0
see ZFUIScrollViewImplHelper
virtual void mouseEventForward(void *nativeChild, void *nativeMouseEvent)=0
see ZFUIScrollViewImplHelper
virtual void * translateFromChildToParent(void *nativeChild, void *nativeMouseEvent, zffloat const &xInChild, zffloat const &yInChild)=0
see translateFromParentToChild
virtual void findTouchedChildScrollViewCleanup(void *nativeChild)=0
see ZFUIScrollViewImplHelper
base class of all UI views
Definition ZFUIView.h:90
@ e_Cancel
mouse cancel
Definition ZFUIMouseEvent.h:19