home *** CD-ROM | disk | FTP | other *** search
- #include <exec/types.h>
- #include <graphics/displayinfo.h>
- #include <stdio.h>
- #include <string.h>
-
- #include <clib/graphics_protos.h>
- #include <clib/utility_protos.h>
-
- /*****************************************************************************/
-
- #define MONITOR_PART(id) ((id) & MONITOR_ID_MASK)
-
- /*****************************************************************************/
-
- BOOL NameMode (ULONG modeID, STRPTR result)
- {
- struct NameInfo nameInfo;
- struct DisplayInfo dispInfo;
- struct DimensionInfo dimInfo;
- struct MonitorInfo monInfo;
- char buffer[DISPLAYNAMELEN + 1];
- UWORD len;
- DisplayInfoHandle dh;
-
- result[0] = 0;
-
- dh = FindDisplayInfo (modeID);
- if (GetDisplayInfoData (dh, (APTR) & dispInfo, sizeof (struct DisplayInfo),
- DTAG_DISP, INVALID_ID), INVALID_ID)
- {
- if (!dispInfo.NotAvailable)
- {
- if (GetDisplayInfoData (dh, (APTR) & dimInfo, sizeof (struct DimensionInfo),
- DTAG_DIMS, INVALID_ID))
- {
- /* Get name or make one if no name available */
- if (GetDisplayInfoData (dh, (APTR) & nameInfo, sizeof (struct NameInfo),
- DTAG_NAME, INVALID_ID))
- {
- strcpy (result, nameInfo.Name);
- return (TRUE);
- }
- else
- {
- if (GetDisplayInfoData (dh, (APTR) & monInfo, sizeof (struct MonitorInfo),
- DTAG_MNTR, INVALID_ID))
- {
- if ((monInfo.Mspc) && (monInfo.Mspc->ms_Node.xln_Name))
- {
- strcpy (buffer, monInfo.Mspc->ms_Node.xln_Name);
- len = strlen (buffer);
- if ((len > 8) && (Strnicmp (&buffer[len - 8], ".monitor", len - 8)
- == 0))
- {
- buffer[len - 8] = 0;
- len -= 8;
- }
-
- while (len > 0)
- buffer[--len] = ToUpper (buffer[len]);
- }
- }
-
- sprintf (result, "%s:%lu x %lu %s%s%s",
- buffer,
- (dimInfo.Nominal.MaxX - dimInfo.Nominal.MinX + 1),
- (dimInfo.Nominal.MaxY - dimInfo.Nominal.MinY + 1),
- (dispInfo.PropertyFlags & DIPF_IS_HAM) ? "HAM " :
- (dispInfo.PropertyFlags & DIPF_IS_EXTRAHALFBRITE) ? "EHB " : "",
- (dispInfo.PropertyFlags & DIPF_IS_PF2PRI) ? "DPF2 " :
- (dispInfo.PropertyFlags & DIPF_IS_DUALPF) ? "DPF " : "",
- (dispInfo.PropertyFlags & DIPF_IS_LACE) ? "Laced " : "", "");
-
- return (TRUE);
- }
- }
- }
- }
-
- return (FALSE);
- }
-
- /*****************************************************************************/
-
- void main (void)
- {
- ULONG modeID;
- char name[64];
-
- modeID = INVALID_ID;
- while ((modeID = NextDisplayInfo (modeID)) != INVALID_ID)
- {
- if (MONITOR_PART (modeID)) /* ignore "default" monitor */
- {
- if (NameMode (modeID, name))
- {
- printf ("%s\n", name);
- }
- }
- }
- }
-