home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: WPS_PM / WPS_PM.zip / npssp181.zip / npswpswa.doc < prev    next >
Text File  |  1995-11-02  |  12KB  |  294 lines

  1.       NPS WPS Enhancer versión 1.81 Manual para Animación de Ventanas
  2.  
  3. [ Nota del traductor: muchas de las palabras referidas a llamadas al API      ]
  4. [ de OS/2 se mantienen en inglés. También los valores TRUE y FALSE, ya que    ]
  5. [ los valores en inglés son los usados al programar en cualquier lenguaje.    ]
  6.  
  7. [ "Number of AfterImages" fue traducido finalmente, y luego de una larga      ]
  8. [ experimentación con otras descripciones, como "repetición de cuadros" que   ]
  9. [ aunque no es exacto, define lo que el autor llama "afterimages", es decir,  ]
  10. [ un número de cuadros que se repiten sólo al comienzo de la animación para   ]
  11. [ dar sensación de profundidad y movimiento. Prueben setear este valor a 1    ]
  12. [ y verán a que me refiero.                                                   ]
  13.  
  14. [Resumen]
  15.  
  16.   NPS WPS Enhancer carga las DLLs descriptas en NPSWPS.LST para las animaciones
  17. de ventanas. De esta manera, los programadores que escriban sus propias DLLs,
  18. pueden agregar sus animaciones al programa. Este documento muestra como crear
  19. sus propias animaciones.
  20.  
  21.  
  22. [Definiciones de función y estructura]
  23.  
  24.   Por favor lea el archivo NPSWPSWA.H primero.  Este archivo coontiene las
  25. definiciones necesarias para crear animaciones de ventanas. Las funciones de
  26. animación de ventanas deben ser declaradas de la siguiente forma:
  27.  
  28.   BOOL EXPENTRY windowAnimation(struct AnimationData *pAnimationData);
  29.  
  30.  
  31.   "AnimationData" es la estructura usada para las funciones de animación de
  32. ventanas. Esta estructura contiene las variables listadas a continuación.
  33.  
  34. HPS hps;
  35.   El espacio de presentación de la pantalla completa.
  36.  
  37. HWND hwnd;
  38.   El handle de ventana de aquella ventana que se está abriendo.  Si la
  39. función de animación es llamada para una ventana que se cierra, el valor
  40. de esta variable es seteado a NULLHANDLE.
  41.   A la ventana que se está abriendo se le prohíbe ser arrastrada usando
  42. la API WinLockWindowUpdate.
  43.  
  44. RECTL rectWindow;
  45.   Los datos del rectángulo que indica la posición y el tamaño de la ventana
  46. en las coordenadas de pantalla.
  47.  
  48. POINTL ptCenter;
  49.   La posición del centro de la ventana.  Este dato se calcula así:
  50. ptCenter.x = (rectWindow.xLeft + rectWindow.xRight) / 2,
  51. ptCenter.y = (rectWindow.yBottom + rectWindow.yTop) / 2.
  52.  
  53. POINTL ptRelRightTop;
  54.   La posición de la esquina superior derecha de la ventana en las coordenadas
  55. de la ventana.
  56. ptRelRightTop.x = rectWindow.xRight - ptCenter.x,
  57. ptRelRightTop.y = rectWindow.yTop - ptCenter.y.
  58.  
  59. BOOL fOpen;
  60.   TRUE si la función de animación es llamada para una ventana que se abre,
  61. FALSE para una ventana que se cierra.
  62.  
  63. enum AnimationCallType animCallType;
  64.   Para qué se llama a la función de animación.  Esta variable es seteada a
  65. "AnimationInitialize" para inicializar la función para una animación de
  66. apertura o cierre. "Animationdraw" para dibujar la animación, "AnimationErase"
  67. para borrar la animación, y "AnimationTerminate" para terminar la animación.
  68.  
  69. LONG lStep;
  70.   El paso actual de la animación.  Este valor va desde 1 hasta cTotalSteps
  71. (ver más abajo).
  72.  
  73. LONG cTotalSteps;
  74.   Los pasos totales de cada tipo de animación.  El usuario puede cambiar este
  75. valor mediante la ventana de configuración de animaciones.
  76.  
  77. LONG cAfterimages;
  78.   El número de cuadros repetidos. El usuario puede cambiar este valor con
  79. el cuaderno de valores.
  80.  
  81. LONG lParameter;
  82.   El parámetro para cada función de animación. Este valor indica el ángulo de
  83. rotación para "Spin Frame", y el divisor de cuadro para "Scatter / Gather
  84. Frames".  El usuario puede también cambiar este valor.
  85.  
  86. LONG lVersion;
  87.   El número de versión del NPS WPS Enhancer. Este valor se calcula de la
  88. siguiente manera:
  89. lVersion = MajorVersion x 1000 + MinorVersion x 10 + Revision
  90.  
  91. Por ejemplo, NPS WPS Enhancer versión 1.81 setea este valor en 1810, y la
  92. versión 2.71a seteara este valor en 2711, etc.
  93.   Esta variable sólo está disponible en el NPS WPS Enhancer versión 1.81 o
  94. posterior.
  95.  
  96. RECTL rectScreen;
  97.   Los datos del rectángulo que indica el tamaño de la pantalla completa.
  98. Los valores rectScreen.xLeft y rectScreen.yBottom son siempre puestos a
  99. cero. Esta variable está disponible desde la versión 1.81.
  100.  
  101. LONG alReserved[27];
  102.   No la use. Está reservada para futuras versiones.
  103.  
  104. CHAR achBuffer[4000];
  105.  
  106.   El area de memoria libre para la animación.  Puede guardar los datos
  107. necesarios para dibujar una animación de ventana.
  108.  
  109.  
  110. [Cómo llamar a las funciones de animación]
  111.  
  112.   La función para dibujar la animación es elegida aleatoreamente cada vez
  113. que una ventana es abierta o cerrada, de la lista de funciones de animación
  114. habilitadas.
  115.  
  116.   Cuando NPS WPS Enhancer intercepta el mensaje que dice que una ventana está
  117. siendo abierta o cerrada, el programa toma el HPS de la pantalla y setea su
  118. color a CLR_WHITE, su modo de foreground mix a FM_MIX.
  119.  
  120.   Luego de setear AnimationData, se llama a la función de animación con el
  121. tipo de llamada (animCallType) de AnimationInitialize.  La función de
  122. animación tiene que inicializarse para la animación de esta ventana, y retornar
  123. el valor BOOL.
  124.  
  125. La función guarda los datos de la animación en achBuffer si es necesario.
  126.  
  127.   Si el resultado es FALSE, NPS WPS Enhancer tratará de inicializar otra
  128. función de animación. Si falla al inicializar tres veces seguidas, la animación
  129. de ventana no funcionará para nada para esta ventana. Si el resultado es
  130. TRUE, la animación comienza.
  131.  
  132.   La función de animación es llamada dos veces para cada paso; una vez para
  133. dibujar la animación, otra vez para borrarla.  El puntero a AnimationData
  134. apunta a los mismos datos usados en la llamada de inicialización.
  135.  
  136.   Al abrir una ventana, el valor de paso (lStep) se incrementa desde 1 hasta
  137. el número total de pasos (cTotalSteps). Al cerrar una ventana, el valor del
  138. paso va disminuyendo, desde el número total de pasos hasta 1.
  139.   La llamada a la función para borrar la animación es demorada de acuerdo al
  140. valor especificado para el número de cuadros repetidos.
  141.  
  142.   Por ejemplo, los parámetros para las animaciones de apertura se muestran a
  143. continuación donde el número de pasos o cuadros es seteado en 100, y el
  144. número de cuadros repetidos en 1.
  145.  
  146.   Orderç  Paso/Cuadro  Tipo de llamada (animCallType)
  147.     1         1       draw    (cuadros repetidos: 1)
  148.     2         1       erase
  149.     3         2       draw
  150.     4         2       erase
  151.     5         3       draw
  152.     6         3       erase
  153.     7         4       draw
  154.     8         4       erase
  155.  
  156.    ...
  157.  
  158.   197        99       draw 
  159.   198        99       erase
  160.   199       100       draw
  161.   200       100       erase   (cuadros repetidos: 0)
  162.  
  163.   Si el número de cuadros repetidos es seteado en 3 en este caso, los
  164. parámetros son seteados así:
  165.  
  166.   Orderç  Paso/Cuadro Tipo de llamada
  167.     1         1       draw    (Cuadros repetidos: 1)
  168.     2         2       draw    (Cuadros repetidos: 2)
  169.     3         3       draw    (Cuadros repetidos: 3)
  170.     4         1       erase
  171.     5         4       draw
  172.     6         2       erase
  173.     7         5       draw
  174.     8         3       erase
  175.  
  176.    ...
  177.  
  178.   193        98       draw
  179.   194        96       erase
  180.   195        99       draw
  181.   196        97       erase
  182.   197       100       draw
  183.   198        98       erase   (Cuadros repetidos: 2)
  184.   199        99       erase   (Cuadros repetidos: 1)
  185.   200       100       erase   (Cuadros repetidos: 0)
  186.  
  187.   Los parámetros para las animaciones de cierre se muestran a continuación
  188. donde el total de pasos es 100, y el número de cuadros repetidos es 1.
  189.  
  190.   Orderç Paso/Cuadro  Tipo de llamada
  191.     1       100       draw    (Cuadros repetidos: 1)
  192.     2       100       erase
  193.     3        99       draw
  194.     4        99       erase
  195.     5        98       draw
  196.     6        98       erase
  197.     7        97       draw
  198.     8        97       erase
  199.  
  200.    ...
  201.  
  202.   197         2       draw 
  203.   198         2       erase
  204.   199         1       draw
  205.   200         1       erase   (cuadros repetidos: 0)
  206.  
  207.   Si el número de cuadros repetidos es seteado en 3 es este caso los
  208. parámetros son seteados así:
  209.  
  210.   Orderç Paso/Cuadro  Tipo de llamada
  211.     1       100       draw    (cuadros repetidos: 1)
  212.     2        99       draw    (cuadros repetidos: 2)
  213.     3        98       draw    (cuadros repetidos: 3)
  214.     4       100       erase
  215.     5        97       draw
  216.     6        99       erase
  217.     7        96       draw
  218.     8        98       erase
  219.  
  220.    ...
  221.  
  222.   193         3       draw
  223.   194         5       erase
  224.   195         2       draw
  225.   196         4       erase
  226.   197         1       draw
  227.   198         3       erase   (cuadros repetidos: 2)
  228.   199         2       erase   (cuadros repetidos: 1)
  229.   200         1       erase   (cuadros repetidos: 0)
  230.  
  231.  
  232.   Si piensa que esto es demasiado complicado (¡Y yo creo que sí!), sólo
  233. ignore si se está abriendo o cerrando, dibujando o borrando, y el número
  234. de repetición de cuadros. En vez de eso, sólo dibuje lo mismo la cantidad
  235. de veces que indique el número de pasos. Como la función de animación es
  236. llamada siempre dos veces durante el mismo paso, y el modo de mezcla es seteado
  237. en XOR, esta forma de dibujar garantiza que lo que se dibuja es siempre
  238. borrado. También garantiza que el movimiento de cerrar es exactmante el mismo
  239. (en sentido inverso) que el de apertura. You use este método en todas las
  240. funciones de animación en NPSWPSWA.CPP.
  241.  
  242.   Las funciones de animación deben retornar un valor TRUE si desea continuar
  243. con la animación un paso más. Si regresa FALSE, la animación es abortada
  244. inmediatamente.
  245.  
  246.   Después de dibujar y borrar el efecto de animación, la función de animación
  247. es llamada nuevamente con el tipo de llamada "AnimationTerminate". En esta
  248. llamada de terminación ud. puede reinicializar y borrar recursos si desea.
  249. Esta terminación es siempre llamada si la inicialización termina exitosamente
  250. (Incluso si la animación es abortada).
  251.  
  252.   Yo no use la llamada de terminación en NPSWPSWA.CPP, y esta sólo devuelve
  253. TRUE.
  254.  
  255.  
  256. [Como registrar funciones de animación de ventanas]
  257.  
  258.   Primero, las funciones de animación deben ser exportadas en una DLL, no
  259. por sus nombres sino por sus ordenales.  Lea NPSWPSWA.DEF como ejemplo.
  260.  
  261.   El formato de NPSWPS.LST se describe a continuación. Los parámetros son
  262. separados por un espacio.
  263.  
  264. DLL-Name DLL-Ordinal "Animation Name" "Parameter Name" "Displayed Animation Name" "Displayed Parameter Name" Default-Step Default-Parameter Minimum-Parameter Maximum-Parameter
  265.  
  266.   Las líneas que comienzan con ";" son ignoradas.  "Animation Name" y
  267. "Parameter Name" deben mantenerse en ingles para manterner la compatibilidad
  268. entre las distintas versiones. Para evitar conflictos en los nombres de
  269. animación, por favor incluya el nombre del autor en el nombre de la animación
  270. si es posible. Por ejemplo, "Spin Frame de Takasugi", etc.
  271.  
  272.   "Displayed Animation Name" y "Displayed Parameter Name" son mostradas al
  273. usuario en la ventana de configuración de animaciones, El usuario puede
  274. modificar estos valores.
  275.  
  276.   Default-Step y Default-Parameter son usados para setear los valores por
  277. omisión la primera vez que se carga la DLL. Una vez cargado, NPS WPS Enhancer
  278. guardará la información de las animaciones en el archivo NPSWPS.INI.
  279.  
  280. [Otros]
  281.  
  282.   Si tiene alguna pregunta sobre las animaciones de ventanas, por favor
  283. envíeme un mensaje por e-mail [en inglés]. Espero ver sus lindas animaciones.
  284.  
  285.  
  286.             Shinji 'N.P.S.' Takasugi     Team OS/2 Japan
  287.             nps1970@ibm.net
  288.             JBD03575@niftyserve.or.jp (for Japanese users)
  289.  
  290. Traducción: Fernando Cassia
  291.             Team OS/2
  292.             Buenos Aires, Argentina.
  293.  
  294.