iup-stack/iup/srccontrols/matrix/iupmat_scroll.h

70 lines
3.7 KiB
C
Raw Normal View History

2023-02-20 16:44:45 +00:00
/** \file
* \brief iupmatrix control
* scrolling.
*
* See Copyright Notice in "iup.h"
*/
#ifndef __IUPMAT_SCROLL_H
#define __IUPMAT_SCROLL_H
#ifdef __cplusplus
extern "C" {
#endif
int iupMatrixScroll_CB(Ihandle* ih, int action, float posx, float posy);
void iupMatrixScrollToVisible(Ihandle* ih, int lin, int col);
typedef void(*iupMatrixScrollMoveFunc)(Ihandle* ih, int mode, int m);
void iupMatrixScrollMove(iupMatrixScrollMoveFunc func, Ihandle* ih, int mode, int m);
/* Used only by the macros below */
void iupMatrixScrollHomeFunc(Ihandle* ih, int, int);
void iupMatrixScrollEndFunc(Ihandle* ih, int, int);
void iupMatrixScrollLeftUpFunc(Ihandle* ih, int, int);
void iupMatrixScrollRightDownFunc(Ihandle* ih, int, int);
void iupMatrixScrollPgLeftUpFunc(Ihandle* ih, int, int);
void iupMatrixScrollPgRightDownFunc(Ihandle* ih, int, int);
void iupMatrixScrollPosFunc(Ihandle* ih, int, int);
void iupMatrixScrollCrFunc(Ihandle* ih, int, int);
/* Mode used to "walk" inside the matrix.
It shows if the movement request was from the scrollbar or from a key.
Possible values for the "mode" parameter of the iupMatrixScrollMove function.
*/
#define IMAT_SCROLLBAR 0
#define IMAT_SCROLLKEY 1
/* Macros to help during the call of iupMatrixScrollMove function */
/* used in the keyboard processing module */
#define iupMATRIX_ScrollKeyHome(ih) iupMatrixScrollMove(iupMatrixScrollHomeFunc , ih, IMAT_SCROLLKEY, 0)
#define iupMATRIX_ScrollKeyEnd(ih) iupMatrixScrollMove(iupMatrixScrollEndFunc , ih, IMAT_SCROLLKEY, 0)
#define iupMATRIX_ScrollKeyPgUp(ih) iupMatrixScrollMove(iupMatrixScrollPgLeftUpFunc , ih, IMAT_SCROLLKEY, IMAT_PROCESS_LIN)
#define iupMATRIX_ScrollKeyPgDown(ih) iupMatrixScrollMove(iupMatrixScrollPgRightDownFunc, ih, IMAT_SCROLLKEY, IMAT_PROCESS_LIN)
#define iupMATRIX_ScrollKeyDown(ih) iupMatrixScrollMove(iupMatrixScrollRightDownFunc , ih, IMAT_SCROLLKEY, IMAT_PROCESS_LIN)
#define iupMATRIX_ScrollKeyRight(ih) iupMatrixScrollMove(iupMatrixScrollRightDownFunc , ih, IMAT_SCROLLKEY, IMAT_PROCESS_COL)
#define iupMATRIX_ScrollKeyUp(ih) iupMatrixScrollMove(iupMatrixScrollLeftUpFunc , ih, IMAT_SCROLLKEY, IMAT_PROCESS_LIN)
#define iupMATRIX_ScrollKeyLeft(ih) iupMatrixScrollMove(iupMatrixScrollLeftUpFunc , ih, IMAT_SCROLLKEY, IMAT_PROCESS_COL)
#define iupMATRIX_ScrollKeyCr(ih) iupMatrixScrollMove(iupMatrixScrollCrFunc , ih, IMAT_SCROLLKEY, 0)
/* Used by the scrollbar callback only */
#define iupMATRIX_ScrollUp(ih) iupMatrixScrollMove(iupMatrixScrollLeftUpFunc , ih, IMAT_SCROLLBAR, IMAT_PROCESS_LIN)
#define iupMATRIX_ScrollLeft(ih) iupMatrixScrollMove(iupMatrixScrollLeftUpFunc , ih, IMAT_SCROLLBAR, IMAT_PROCESS_COL)
#define iupMATRIX_ScrollDown(ih) iupMatrixScrollMove(iupMatrixScrollRightDownFunc , ih, IMAT_SCROLLBAR, IMAT_PROCESS_LIN)
#define iupMATRIX_ScrollRight(ih) iupMatrixScrollMove(iupMatrixScrollRightDownFunc , ih, IMAT_SCROLLBAR, IMAT_PROCESS_COL)
#define iupMATRIX_ScrollPgUp(ih) iupMatrixScrollMove(iupMatrixScrollPgLeftUpFunc , ih, IMAT_SCROLLBAR, IMAT_PROCESS_LIN)
#define iupMATRIX_ScrollPgLeft(ih) iupMatrixScrollMove(iupMatrixScrollPgLeftUpFunc , ih, IMAT_SCROLLBAR, IMAT_PROCESS_COL)
#define iupMATRIX_ScrollPgDown(ih) iupMatrixScrollMove(iupMatrixScrollPgRightDownFunc, ih, IMAT_SCROLLBAR, IMAT_PROCESS_LIN)
#define iupMATRIX_ScrollPgRight(ih) iupMatrixScrollMove(iupMatrixScrollPgRightDownFunc, ih, IMAT_SCROLLBAR, IMAT_PROCESS_COL)
#define iupMATRIX_ScrollPosVer(ih, y) iupMatrixScrollMove(iupMatrixScrollPosFunc , ih, IMAT_SCROLLBAR, IMAT_PROCESS_LIN)
#define iupMATRIX_ScrollPosHor(ih, x) iupMatrixScrollMove(iupMatrixScrollPosFunc , ih, IMAT_SCROLLBAR, IMAT_PROCESS_COL)
#ifdef __cplusplus
}
#endif
#endif