home *** CD-ROM | disk | FTP | other *** search
/ Beginning Direct3D Game Programming / Direct3D.iso / directx / dxf / include / mpconfig.h < prev    next >
C/C++ Source or Header  |  2000-10-01  |  6KB  |  145 lines

  1. //------------------------------------------------------------------------------
  2. // File: MPConfig.h
  3. //
  4. // Desc: 
  5. //
  6. // Copyright (c) 1997 - 2000, Microsoft Corporation.  All rights reserved.
  7. //------------------------------------------------------------------------------
  8.  
  9.  
  10. #ifndef __IMPConfig__
  11. #define __IMPConfig__
  12.  
  13. #ifdef __cplusplus
  14. extern "C" {
  15. #endif
  16.  
  17. typedef enum _AM_ASPECT_RATIO_MODE
  18. {
  19.     AM_ARMODE_STRETCHED,        // don't do any aspect ratio correction
  20.     AM_ARMODE_LETTER_BOX,        // letter box the video, paint background color in the excess region
  21.     AM_ARMODE_CROP,            // crop the video to the right aspect ratio
  22.     AM_ARMODE_STRETCHED_AS_PRIMARY  // follow whatever the primary stream does (in terms of the mode as well as pict-aspect-ratio values)
  23. } AM_ASPECT_RATIO_MODE;
  24.  
  25.  
  26. DECLARE_INTERFACE_(IMixerPinConfig, IUnknown)
  27. {
  28.     // this function sets the position of the stream in the display window, assuming 
  29.     // that the window coordinates are {0, 0, 10000, 10000}. Thus giving arguments
  30.     // (0, 0, 5000, 5000) will put the stream in the top-left quarter. Any value greater
  31.     // than 10000 is invalid.
  32.     STDMETHOD (SetRelativePosition)(THIS_ 
  33.                     IN DWORD dwLeft,
  34.                     IN DWORD dwTop,
  35.                     IN DWORD dwRight,
  36.                     IN DWORD dwBottom
  37.                    ) PURE;
  38.  
  39.     // this function gets the position of the stream in the display window, assuming 
  40.     // that the window coordinates are {0, 0, 10000, 10000}. Thus if the values returned
  41.     // are (0, 0, 5000, 5000), then it means that the stream is in the top-left quarter. 
  42.     STDMETHOD (GetRelativePosition)(THIS_ 
  43.                     OUT DWORD *pdwLeft,
  44.                     OUT DWORD *pdwTop,
  45.                     OUT DWORD *pdwRight,
  46.                     OUT DWORD *pdwBottom
  47.                    ) PURE;
  48.  
  49.     // this function sets the ZOrder of the stream. The ZOrder of 0 is the closest
  50.     // to the eyes of the user, and increasing values imply greater distance.
  51.     STDMETHOD (SetZOrder)(THIS_ 
  52.               IN DWORD dwZOrder
  53.              ) PURE;
  54.  
  55.  
  56.     // this function gets the ZOrder of the stream. The ZOrder of 0 is the closest
  57.     // to the eyes of the user, and increasing values imply greater distance.
  58.     STDMETHOD (GetZOrder)(THIS_ 
  59.               OUT DWORD *pdwZOrder
  60.              ) PURE;
  61.  
  62.     // this function sets the colorkey being used by the stream. Setting this value on the 
  63.     // primary stream sets the destination colorkey being used by the overlay surface. Setting
  64.     // this value on the secondary pin makes sense only if the stream is transparent. By default
  65.     // the destination colorkey is used as the colorkey for all transparent (secondary) streams.
  66.     STDMETHOD (SetColorKey)(THIS_ 
  67.                 IN COLORKEY *pColorKey
  68.                ) PURE;
  69.  
  70.     // this function gets the colorkey being used by the stream. Getting this value on the 
  71.     // primary stream gets the destination colorkey being used by the overlay surface. Getting
  72.     // this value on the secondary pin returns the colorkey being used by that particular stream.
  73.     // When using this method, you are allowed to pass NULL for either pColorKey or pColor but 
  74.     // not both.
  75.     STDMETHOD (GetColorKey)(THIS_ 
  76.                 OUT COLORKEY *pColorKey,
  77.                 OUT DWORD *pColor
  78.                ) PURE;
  79.  
  80.     // this function sets the blending parameter which in turn defines, how the secondary stream 
  81.     // is going to be blended with the primary stream. A value of 0 makes the secondary stream 
  82.     // invisible, a value of 255 makes the primary stream invisible (in that region only ofcourse),
  83.     // and any value inbetween, say x, blends the secondary and primary streams in the ratio x : (255-x).
  84.     // If no value is set, the default is 255.
  85.     // Any value less than 0 or greater than 255 is invalid. Calling this function on the primary
  86.     // stream would result in a return value of E_UNEXPECTED.
  87.     STDMETHOD (SetBlendingParameter)(THIS_ 
  88.                      IN DWORD dwBlendingParameter
  89.                     ) PURE;
  90.  
  91.     // this function gets the blending parameter which in turn defines, how the secondary stream 
  92.     // is currently being blended with the primary stream. 
  93.     STDMETHOD (GetBlendingParameter)(THIS_ 
  94.                      OUT DWORD *pdwBlendingParameter
  95.                     ) PURE;
  96.  
  97.  
  98.     // this function is used to set the Aspect Ratio Correction mode on the pin. 
  99.     // If the mode is set to letter box, black color is painted on the excess region 
  100.     STDMETHOD (SetAspectRatioMode)(THIS_ 
  101.                    IN AM_ASPECT_RATIO_MODE amAspectRatioMode
  102.                   ) PURE;
  103.  
  104.     // this function is used to get the Aspect Ratio Correction mode on the pin.  
  105.     STDMETHOD (GetAspectRatioMode)(THIS_ 
  106.                    OUT AM_ASPECT_RATIO_MODE* pamAspectRatioMode
  107.                   ) PURE;
  108.  
  109.     // this function sets the stream to be transparent. That means that the stream is not going
  110.     // to occupy the whole of the rectangle (specified by SetRelativePosition), some of the region
  111.     // is going to be transparent i.e. the stream underneath, is going to see through.
  112.     // Calling this function on the primary stream would result in a return value of E_UNEXPECTED.
  113.     STDMETHOD (SetStreamTransparent)(THIS_ 
  114.                      IN BOOL bStreamTransparent
  115.                     ) PURE;
  116.  
  117.     // this function is used to tell whether the stream is transparent or not. 
  118.     STDMETHOD (GetStreamTransparent)(THIS_ 
  119.                      OUT BOOL *pbStreamTransparent
  120.                     ) PURE;
  121. };
  122.  
  123.  
  124. DECLARE_INTERFACE_(IMixerPinConfig2, IMixerPinConfig)
  125. {
  126.     // this functions sets the color-controls, if the vga chip supports it.
  127.     STDMETHOD (SetOverlaySurfaceColorControls)(THIS_ 
  128.                            IN LPDDCOLORCONTROL pColorControl
  129.                           ) PURE;
  130.  
  131.     // this functions gets the color-controls. It also returns the capability of the vga hardware 
  132.     // in the dwFlags value of the struct.
  133.     STDMETHOD (GetOverlaySurfaceColorControls)(THIS_ 
  134.                            OUT LPDDCOLORCONTROL pColorControl
  135.                           ) PURE;
  136. };
  137.  
  138. #ifdef __cplusplus
  139. }
  140. #endif
  141.  
  142.  
  143. #endif // #define __IMPConfig__
  144.  
  145.