[Contents] [Index] [Help] [Retrace] [Browse <] [Browse >]


   NAME
        BestModeIDA -- calculate the best ModeID with given parameters (V39)
        BestModeID  -- varargs stub for BestModeIDA()

   SYNOPSIS
        ID = BestModeIDA(TagItems)
        d0               a0

        ULONG BestModeIDA(struct tagitem *);

        ID = BestModeID(Tag1, ...)

        ULONG BestModeID(ULONG, ...);

   FUNCTION
        To determine the best ModeID to fit the parameters set in the TagList.

   INPUTS
        TagItems - A pointer to an array of TagItems.

   TAGS
        BIDTAG_DIPFMustHave (ULONG) - Mask of DIPF_ flags
               (from DisplayInfo->PropertyFlags) that the returned ModeID
               must have.
               Default - NULL

        BIDTAG_DIPFMustNotHave (ULONG) - Mask of DIPF_ flags that the
               returned ModeID must not have.
               Default - SPECIAL_FLAGS

        BIDTAG_ViewPort (struct viewport *) - viewport for which a best-fit
               ModeID is sought.
               Default - NULL

        BIDTAG_NominalWidth (UWORD),
        BIDTAG_NominalHeight (UWORD) - together make the aspect ratio.
               These values override the vp->DWidth and vp->DHeight values
               in the given viewport.
               Default - SourceID NominalDimensionInfo if BIDTAG_SourceID is
               passed, or vp->DWidth and vp->DHeight if BIDTAG_ViewPort is
               passed, or 640 x 200.

        BIDTAG_DesiredWidth (UWORD),
        BIDTAG_DesiredHeight (UWORD) - Used to distinguish between two
               mode IDs with identical aspect ratios.
               Default - same values as NominalWidth and NominalHeight.

        BIDTAG_Depth (UBYTE) - minimum the returned ModeID must support.
               Default - vp->RasInfo->BitMap->Depth if BIDTAG_ViewPort is
               passed, else 1.

        BIDTAG_MonitorID (ULONG) - returned ModeID must use this monitor.
               Default - will not restrict the search to any particular monitor

        BIDTAG_SourceID (ULONG) - Use this ModeID instead of a viewport.
               If specified, the DIPFMustHave mask is made up of the
               ((DisplayInfo->PropertyFlags of this ID & SPECIAL_FLAGS) |
                DIPFMustHave flags).
               Default - VPModeID(vp) if BIDTAG_ViewPort was passed, else the
               DIPFMustHave and DIPFMustNotHave masks are left unchanged.

        BIDTAG_RedBits (UBYTE),
        BIDTAG_BlueBits (UBYTE),
        BIDTAG_Greenits (UBYTE) - Minimum bits per gun the resultant
               ModeID must support.
               Default - 4 bits per gun.

   RESULTS
        ID      - ID of the best mode to use, or INVALID_ID if a match could
                  not be found.

   NOTES
        This function takes into account the Compatability of the Monitor
        being matched to, and the source viewport or modeid.
        Incompatibilitys will cause a result of INVALID_ID.

        BIDTAG_NominalWidth, BIDTAG_NominalHeight,
        BIDTAG_DesiredWidth, BIDTAG_DesiredHeight, must all be non-0.

        The comparisons are made against the DimensionInfo->Nominal values.
        ie, this will not return a best fit against overscan dimensions.

   EXAMPLE
        IFF Display Program with a HAM image, to be displayed in the same
        monitor type as the Workbench viewport.

        ID = BestModeID(BIDTAG_NominalWidth, IFFImage->Width,
                        BIDTAG_NominalHeight, IFFImage->Height,
                        BIDTAG_Depth, IFFImage->Depth,
                        BIDTAG_DIPFMustHave, DIPF_IS_HAM,
                        BIDTAG_MonitorID, (GetVPModeID(WbVP) & MONITOR_ID_MASK),
                        TAG_END);

        To make an interlace version of a ViewPort:

        ID = BestModeID(BIDTAG_ViewPort, ThisViewPort,
                        BIDTAG_MustHave, DIFP_IS_LACE,
                        TAG_END);

   SEE ALSO
        <graphics/modeid.h> <graphics/displayinfo.h>