Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

100 lines
2.7 KiB

  1. #ifndef LSSUBL_DEFINED
  2. #define LSSUBL_DEFINED
  3. #include "lsidefs.h"
  4. #include "plsdnode.h"
  5. #include "lstflow.h"
  6. #include "plschcon.h"
  7. #include "posinln.h"
  8. #include "objdim.h"
  9. #include "brkkind.h"
  10. #define tagLSSUBL Tag('L','S','S','L')
  11. #define FIsLSSUBL(p) FHasTag(p,tagLSSUBL)
  12. typedef struct brkcontext
  13. {
  14. POSINLINE posinlineBreakPrev; /* information about previous break */
  15. OBJDIM objdimBreakPrev;
  16. BRKKIND brkkindForPrev;
  17. BOOL fBreakPrevValid;
  18. POSINLINE posinlineBreakNext; /* information about next break */
  19. OBJDIM objdimBreakNext;
  20. BRKKIND brkkindForNext;
  21. BOOL fBreakNextValid;
  22. POSINLINE posinlineBreakForce; /* information about force break */
  23. OBJDIM objdimBreakForce;
  24. BRKKIND brkkindForForce;
  25. BOOL fBreakForceValid;
  26. }
  27. BRKCONTEXT;
  28. typedef struct lssubl
  29. {
  30. DWORD tag; /* tag for safety checks */
  31. PLSC plsc; /* LineServices context
  32. parameter to CreateSubLine */
  33. LSCP cpFirst; /* cp for the first fetch
  34. parameter to CreateSubLine */
  35. LSTFLOW lstflow; /* text flow of the subline
  36. parameter to CreateSubLine */
  37. long urColumnMax; /* max lenght to fit into a main line
  38. parameter to CreateSubLine */
  39. LSCP cpLim; /* during formatting is a cpFirst for the next fetch
  40. after SetBreak indicates boundary of the line */
  41. LSCP cpLimDisplay; /* doesn't consider splat char */
  42. PLSDNODE plsdnFirst; /* starting dnode in a subline */
  43. PLSDNODE plsdnLast; /* last dnode in a subline
  44. during formatting serves as psdnToAppend */
  45. PLSDNODE plsdnLastDisplay; /* doesn't consider splat dnode */
  46. PLSCHUNKCONTEXT plschunkcontext;
  47. PLSDNODE plsdnUpTemp; /* temporary used for collecting group chunk */
  48. long urCur, vrCur; /* Current pen position in reference units */
  49. BRKCONTEXT* pbrkcontext; /* information about break opportunites */
  50. BYTE fContiguous; /* if TRUE such line has the same coordinate system as main line
  51. and is allowed to have tabs,
  52. otherwise coordinates of the line starts from 0,0
  53. parameter to CreateSubLine */
  54. BYTE fDupInvalid; /* TRUE before preparing line for display */
  55. BYTE fMain; /* is this subline main */
  56. BYTE fAcceptedForDisplay; /* subline was submitted for display and accepted */
  57. BYTE fRightMarginExceeded; /* used for low level subline to avoid double call to
  58. nominal to ideal */
  59. } LSSUBL;
  60. #define LstflowFromSubline(plssubl) ((plssubl)->lstflow)
  61. #define PlschunkcontextFromSubline(plssubl) ((plssubl)->plschunkcontext)
  62. #define FIsSubLineMain(plssubl) (plssubl)->fMain
  63. #endif /* LSSUBL_DEFINED */