home *** CD-ROM | disk | FTP | other *** search
/ Computer Panoráma / computer_panorama_1997-12-hibas.iso / SHARE / GRAPH / PTC051.ZIP / EXAMPLES / MODELIST.TXT < prev    next >
Text File  |  1997-09-04  |  3KB  |  70 lines

  1.                           =========================
  2.                           = ptc mode list example =
  3.                           =========================
  4.  
  5.  
  6. Overview
  7. --------
  8.  
  9. This example creates an uninitialized PTC object "PTC ptc;" then queries
  10. this object for a list of all available modes. The List<T> template is used
  11. to return a list of MODE structures (see "iface.h" for the declaration of the
  12. MODE struct, and see "list.h" and "iterator.h" for the List and Iterator
  13. template classes).
  14.  
  15.  
  16.  
  17. Accessing mode lists
  18. --------------------
  19.  
  20. There is one quirk to the PTC::GetModeList function - if you request a
  21. mode list from an uninitialized PTC object (as we do here). You get a list of
  22. ALL modes available with all available interfaces (i.e. IVga, IVesa, IDirectX
  23. and so on...). If however, you call PTC::GetModeList _after_ you have
  24. initialized the ptc object, you will get a mode list only for the current
  25. interface.
  26.  
  27.  
  28. For example, this code retrieves the mode list for all interfaces:
  29.  
  30.     PTC ptc;                       // uninitialized ptc object
  31.     List<MODE> modelist;
  32.     ptc.GetModeList(modelist);
  33.  
  34.  
  35. and this code retrieves the list of modes for the current interface:
  36.  
  37.     PTC ptc(320,200,ARGB8888);     // interface is created here
  38.     List<MODE> modelist;
  39.     ptc.GetModeList(modelist);
  40.  
  41.  
  42.  
  43.  
  44. PTC::Init vs. PTC::SetMode
  45. --------------------------
  46.  
  47. A second similar quirk is the difference between PTC::Init and PTC::SetMode.
  48. PTC::Init is basically a mirror of the PTC constructor functionality to allow
  49. you do Close and Re-Init the object at will. Please note, that a PTC::Init
  50. does not need to be preceded by a PTC::Close.
  51.  
  52. PTC::Init operates by trying ALL interfaces to set a specific mode, it only
  53. gives up when there all interfaces have failed to set a mode. Init has the
  54. side effect of TOTALLY nuking the interface also. All bound surfaces are lost
  55. because the current interface is deleted before the new mode is set.
  56.  
  57. PTC::SetMode is a much nicer however - it operates on the current interface
  58. and uses that to set a mode. It does not nuke the interface like Init does.
  59. It is however limited in that the current interface cannot set a mode that
  60. it doesn't support itself. For example, if you were currently in a VESA mode
  61. (IVesa interface) Then any requests to set a fakemode would fail because
  62. fakemodes are only available with the VGA interface (IVga).
  63.  
  64.  
  65. In summary, use PTC::SetMode to change modes *after* your initial PTC setup
  66. where possible as they are faster and cause less trauma in general to your
  67. surfaces :)
  68.  
  69. Use a PTC::Init only when you have to.
  70.