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.

157 lines
3.9 KiB

  1. #include "stdafx.h"
  2. #include "Ctrl.h"
  3. #define GADGET_ENABLE_CONTROLS
  4. #include "OldInterpolation.h"
  5. #include "OldAnimation.h"
  6. #include "OldDragDrop.h"
  7. inline void SetError(HRESULT hr)
  8. {
  9. SetLastError((DWORD) hr);
  10. }
  11. //------------------------------------------------------------------------------
  12. DUSER_API BOOL WINAPI
  13. BuildInterpolation(UINT nIPolID, int nVersion, REFIID riid, void ** ppvUnk)
  14. {
  15. if (nVersion != 0) {
  16. SetError(E_INVALIDARG);
  17. return FALSE;
  18. }
  19. HRESULT hr = E_INVALIDARG;
  20. switch (nIPolID)
  21. {
  22. case INTERPOLATION_LINEAR:
  23. hr = OldInterpolationT<OldLinearInterpolation, ILinearInterpolation>::Build(riid, ppvUnk);
  24. break;
  25. case INTERPOLATION_LOG:
  26. hr = OldInterpolationT<OldLogInterpolation, ILogInterpolation>::Build(riid, ppvUnk);
  27. break;
  28. case INTERPOLATION_EXP:
  29. hr = OldInterpolationT<OldExpInterpolation, IExpInterpolation>::Build(riid, ppvUnk);
  30. break;
  31. case INTERPOLATION_S:
  32. hr = OldInterpolationT<OldSInterpolation, ISInterpolation>::Build(riid, ppvUnk);
  33. break;
  34. }
  35. if (SUCCEEDED(hr)) {
  36. return TRUE;
  37. } else {
  38. SetError(hr);
  39. return FALSE;
  40. }
  41. }
  42. //------------------------------------------------------------------------------
  43. DUSER_API BOOL WINAPI
  44. BuildAnimation(UINT nAniID, int nVersion, GANI_DESC * pDesc, REFIID riid, void ** ppvUnk)
  45. {
  46. HRESULT hr = E_INVALIDARG;
  47. if (nVersion != 0) {
  48. goto Error;
  49. }
  50. if (ppvUnk == NULL) {
  51. goto Error;
  52. }
  53. switch (nAniID)
  54. {
  55. case ANIMATION_ALPHA:
  56. hr = OldAnimationT<OldAlphaAnimation, IAnimation, GANI_ALPHADESC>::Build(pDesc, riid, ppvUnk);
  57. break;
  58. case ANIMATION_SCALE:
  59. hr = OldAnimationT<OldScaleAnimation, IAnimation, GANI_SCALEDESC>::Build(pDesc, riid, ppvUnk);
  60. break;
  61. case ANIMATION_RECT:
  62. hr = OldAnimationT<OldRectAnimation, IAnimation, GANI_RECTDESC>::Build(pDesc, riid, ppvUnk);
  63. break;
  64. case ANIMATION_ROTATE:
  65. hr = OldAnimationT<OldRotateAnimation, IAnimation, GANI_ROTATEDESC>::Build(pDesc, riid, ppvUnk);
  66. break;
  67. }
  68. if (SUCCEEDED(hr)) {
  69. return TRUE;
  70. } else {
  71. Error:
  72. SetError(hr);
  73. return FALSE;
  74. }
  75. }
  76. //------------------------------------------------------------------------------
  77. DUSER_API BOOL WINAPI
  78. GetGadgetAnimation(HGADGET hgad, UINT nAniID, REFIID riid, void ** ppvUnk)
  79. {
  80. HRESULT hr = E_INVALIDARG;
  81. if (hgad == NULL) {
  82. goto Error;
  83. }
  84. if (ppvUnk == NULL) {
  85. goto Error;
  86. }
  87. switch (nAniID)
  88. {
  89. case ANIMATION_ALPHA:
  90. hr = OldAnimationT<OldAlphaAnimation, IAnimation, GANI_ALPHADESC>::GetInterface(hgad, riid, ppvUnk);
  91. break;
  92. case ANIMATION_SCALE:
  93. hr = OldAnimationT<OldScaleAnimation, IAnimation, GANI_SCALEDESC>::GetInterface(hgad, riid, ppvUnk);
  94. break;
  95. case ANIMATION_RECT:
  96. hr = OldAnimationT<OldRectAnimation, IAnimation, GANI_RECTDESC>::GetInterface(hgad, riid, ppvUnk);
  97. break;
  98. case ANIMATION_ROTATE:
  99. hr = OldAnimationT<OldRotateAnimation, IAnimation, GANI_ROTATEDESC>::GetInterface(hgad, riid, ppvUnk);
  100. break;
  101. }
  102. if (SUCCEEDED(hr)) {
  103. return TRUE;
  104. } else {
  105. Error:
  106. SetError(hr);
  107. return FALSE;
  108. }
  109. }
  110. //------------------------------------------------------------------------------
  111. DUSER_API BOOL WINAPI
  112. BuildDropTarget(HGADGET hgadRoot, HWND hwnd)
  113. {
  114. HRESULT hr = E_INVALIDARG;
  115. hgadRoot = GetGadget(hgadRoot, GG_ROOT); // Ensure root
  116. if ((hgadRoot == NULL) || (!IsWindow(hwnd))) {
  117. goto Error;
  118. }
  119. OldDropTarget * pdt;
  120. hr = OldDropTarget::Build(hgadRoot, hwnd, &pdt);
  121. if (SUCCEEDED(hr)) {
  122. return TRUE;
  123. }
  124. Error:
  125. SetError(hr);
  126. return FALSE;
  127. }