ELABORACIÓN DE GRÁFICAS UTILIZANDO FORMAS
Campo de la Invención Una gráfica es una representación gráfica de datos numéricos. Las gráficas son particularmente útiles para presentar datos complicados de una forma concisa y fácil de entender. En el entorno de las computadoras de escritorio de publicidad del día de hoy, los usuarios pueden crear representaciones impresionantes utilizando gráficas. Las gráficas están basadas en los datos subyacentes que son ingresados en un programa de aplicación, tal como "EXCEL" de MICROSOFT CORPORATION. Los datos subyacentes entonces pueden ser utilizados para crear una gráfica de los datos en un número de formatos diferentes, tales como gráficas de pastel, gráficas de barras, histogramas, gráficas de líneas, etc. Además, cada parte de la gráfica puede tener colores, texturas y otros efectos asociados para mejorar la apariencia de la gráfica, lo cual es muy importante para transportar la información. Antecedentes de la Invención Los programas de aplicación han utilizado tradicionalmente las invocaciones de funciones primitivas para presentar gráficas. La interfase de pantalla de gráficos (GDI ó GDI+) de "MICROSOFT WINDOWS" y GEL de "MICROSOFT OFFICE", por ejemplo, son interfases de un nivel relativamente bajo y que son usadas con frecuencia mediante programas de aplicación para presentar gráficas. Dichas interfases de nivel bajo generalmente proporcionan funciones para presentar elementos gráficos en un nivel de píxeles. Por ejemplo, para trazar una línea, un programa de aplicación debe especificar un píxel del inicio y un píxel del final. Después, si la línea se fuera a estrechar, el programa de aplicación debe especificar nuevamente el nuevo píxel del inicio y/o el nuevo píxel del fin. Las interfases tradicionales no incluyen funciones de nivel más alto, tales como la función de estrechamiento de líneas, para manejar un grupo de píxeles como la forma de una línea. Otro problema es que los programas de aplicación diferentes han presentado tradicionalmente las gráficas de manera diferente. Por ejemplo, en el "MICROSOFT WINDOWS", un programa de aplicación puede utilizar un GDI, mientras que otra aplicación puede utilizar una combinación de invocaciones al GEL y GDI. Debido a que las gráficas son presentadas de manera diferente, los elementos similares de las gráficas presentados por programas de aplicación diferentes pueden parecer diferentes para el usuario. Por lo tanto, una gráfica que deba parecer igual de otra manera en MICROSOFT "POWERPOINT" y "EXCEL", por ejemplo, pueden parecer ligeramente diferentes en los dos programas de aplicación.
Los usuarios con frecuencia copian una gráfica de un programa de aplicación y lo importan a otro programa de aplicación. Por ejemplo, se puede copiar una gráfica de "EXCEL" y será pegado en un documento de MICROSOFT "WORD" o una presentación de "POWERPOINT". Tradicionalmente, un usuario ha podido pegar la gráfica, ya sea como un objeto gráfico o como una imagen. Desafortunadamente, cuando el usuario pega la gráfica como una imagen, la gráfica es separada de los datos subyacentes que fueron utilizados para crear la imagen. Esto significa que el usuario ya no puede manipular los datos subyacentes de la gráfica a través de la gráfica pegada. Por ejemplo, el usuario no puede editar los datos o marcas numéricas de la gráfica una vez que la gráfica es pegada en la forma de una imagen. Además, cuando no son pegadas como imágenes, las gráficas de los documentos pueden tener ciertas desventajas. Estas desventajas se deben principalmente al hecho de que la gráfica que no se encuentra en un formato de imagen no es generada con aspectos de presentación en la mente. Por ejemplo, algunas veces las gráficas aparecen con un efecto de distorsión que está distrayendo la vista. Como otro ejemplo, cuando el usuario le vuelve a dar dimensiones a la gráfica, el texto puede aparecer inusual, debido a que la escalación de la fuente no es precisa. Todavía como otro ejemplo, la gráfica que no es pegada como una imagen, a veces aparece diferente en la pantalla de la computadora y no en una impresión, debido a una diferencia en el mapeo de las coordenadas. Por lo tanto, existe una necesidad de una capacidad para presentar y manipular gráficas de una manera consistente en las aplicaciones. Además, existe una necesidad de proporcionar una presentación de gráficos de alta calidad, consistente, mientras que hace posible que los usuarios manipulen los elementos subyacentes de la gráfica. Breve Descripción de los Dibujos La figura 1 ilustra un sistema de elaboración de gráficas de ejemplo que emplea la elaboración de gráficas basada en la forma utilizando un componente común de elaboración de gráficas; La figura 2 es una gráfica de flujo que ilustra la presentación de una gráfica utilizando formas derivadas de un objeto gráfico; La figura 3 es una gráfica de flujo que ilustra la traducción de un objeto gráfico a una definición de gráfica basada en la forma; La figura 4 ilustra una gráfica que tiene datos, marcas, series y otros elementos gráficos que pueden ser traducidos en formas y/o agrupados mediante la máquina de traducción; La figura 5 ilustra una computadora de uso general que puede ser utilizada para implementar sistemas de elaboración de gráficas comunes y los métodos aquí descritos. Descripción Detallada de la Invención En este documento se describen varias implementaciones de sistemas y métodos para presentar y manipular las gráficas. De acuerdo con las diferentes implementaciones aquí descritas, una gráfica es traducida de un objeto gráfico a una definición basada en la forma. El objeto gráfico define las porciones de la gráfica en términos de elementos gráficos y hace referencia a los datos de la gráfica subyacentes sobre los cuales está basada la gráfica. Aunque la gráfica es presentada como formas, el objeto gráfico es mantenido para permitir la manipulación de los datos de la gráfica subyacentes. Un componente de elaboración de gráficas común que es usual para uno o más programas de aplicación, utiliza el objeto gráfico para hacer posible que el usuario manipule los elementos subyacentes de la gráfica. La definición basada en la forma define la gráfica en términos de formas. La definición basada en la forma es utilizada por los módulos comunes de gráficos para producir servicios de presentación de formas consistentes y los servicios de manipulación de forma para diferentes aplicaciones. Además, el módulo de gráficas común proporciona funciones de manipulación del grupo, por medio de las cuales un grupo de formas relacionadas puede ser manipulado en la gráfica. La figura 1 ilustra un sistema de elaboración de gráficas de ejemplo 100 para llevar a cabo una elaboración de gráficas común utilizando una definición de gráfica basada en la forma. El término elaboración de gráficas común se refiere a métodos comunes de manipulación de gráficas en múltiples y/o diferentes aplicaciones. Se encuentra incluido en el sistema 100 el programa de aplicación 102 que proporciona acceso a un documento 104 y un módulo de gráficos común 106 para presentar el documento 104 en una pantalla de monitor de computadora 108. Como se usa en la presente descripción, un documento 104 es un archivo legible por computadora que incluye una información legible para el usuario, tal como texto y gráficos. El documento 104 puede ser visto y editado por un usuario a través de una interfase del usuario del programa de aplicación 102. Los tipos de ejemplo de documentos incluyen, pero no están limitados a, una hoja de cálculo, una presentación o un documento de texto convencional. Por lo tanto, dependiendo del tipo de documento, el programa de aplicación 102 puede ser, por ejemplo, pero no está limitado a, un programa de aplicación MICROSOFT "WORD", "POWERPOINT", "EXCEL", o de otro tipo. A modo de ejemplo, como se muestra en la pantalla 108, el documento 104 es una "Presentación", la cual con frecuencia, pero no siempre, está asociada con el programa "POWERPOINT". Es particularmente importante para la presente descripción una gráfica 110 en la presentación. La gráfica 110 mostrada en la implementación particular de la figura 1 es una gráfica de columnas. De acuerdo con otras implementaciones, la gráfica 110 no está limitada a una gráfica de columnas, sino que puede ser cualquier otro tipo de gráficas, tal como, pero sin limitarse a, una gráfica de pastel, una gráfica de líneas o un trazo de dispersión. Los diferentes datos de la gráfica 110 son especificados originalmente por el documento 104. El documento 104 especifica la gráfica 110 como una definición de gráficos denominada un objeto gráfico 112. El objeto gráfico 112 define la gráfica 110 en término de elementos gráficos. Generalmente, un elemento gráfico es una unidad de datos que representa un aspecto de una gráfica. Generalmente, el elemento gráfico representa un aspecto de la gráfica en relación con la información que lleva la gráfica o el tipo de gráfica. Los elementos de gráfica de ejemplo incluyen barras (por ejemplo, para una gráfica de barras), ejes de la gráfica, leyendas de la gráfica, títulos de la gráfica, marcas de la gráfica, colores del elemento, fuentes de texto, ubicaciones del elemento, fuentes de datos y así sucesivamente. Una implementación de un objeto gráfico 112 es un conjunto de un código de lenguaje de marca que se puede extender (XML). Para ilustrar un ejemplo del código XML de un objeto gráfico 112, se muestra un ejemplo más adelante: - <c:Chart xmlns:c="gráfico" xmlns:s = "shape"> - <c:Escalación< <c:ScalelD>0</c:ScalelD> <c:Orientation> ¡n ax</c:Orientation> </c:Scaling> - <c:Scaling> <c:ScalelD>1 </c:ScalelD> <c:Orientation> inMax</c:Orientation> </c:Scaling> <c:Nombre>Chart 1</c:Name> - <c:PlotArea> <c:Forma /> - <c:Gráfica> <c:Type>Column</c:Type> <c:SubType>Clustered</c:SubType> <c:O erlap>0</c:O erlap> <c:ScalelD>0</c:ScalelD> <c:ScalelD>1 </c:ScalelD> - <c:Series> <c:lndex>0</c:índex> <c: Name>Series 1</c:Nombre> - <c:Forma> - <s:Llenar> - <s:Patrón> <s:Title>Wide upward diagonal</s:T¡tle> <s:Color>black</s:Color> <s:Color2>white</s:Color2> </s:Patrón> </s:Llenar> - <s:Límite> <s:Weight>0</s:Weight> <s:Solid>black</s:Solid> </s:Límite> </c: Forma> - <c:DataLabels> - <c:Forma> - <s:Fuente> <s:FontName>Arial</s:FontName> <s:Size>18</s:Size> <s:AutoScale /> </s:Fuente> </c:Forma> - <c:Número> <c:FormatString>0.0</c:FormatString> </c:Número> <c:ShowValue /> </c:Data!_abels> - <c:Categoría> <c:DataSource>0</c:DataSource> <c:Data>Sheet1 !$A$1 :$A$3</c:Data> </c:Categoría> - <c:Valor> <c: DataSource>0</c:DataSource> <c:Data>Sheet1 !$B$1 :$B$3</c:Data> </c:Valor> </c:Serie> <c:PlotV¡sible /> </c:Gráfica> - <c:Eje> <c: Place me nt>Bottom </c: Place me nt> <c: Axis ID>0</c: Axis ID> <c:ScalelD>0</c:ScalelD> <c:CrossingAxis>1 </c: Crossing Axis>
- <c:Forma> - <s:Fuente> <s:FontName>Arial</s:FontName> <s:Size>18</s:Size> <s:AutoScale /> </s:Fuente> </c:Forma> - <c:Número> <c:SourceLinked /> <c:BuiltlnFormat>0</c:Bu¡ltlnFormat> </c:Number> <c:MajorTick>None</c:MajorTick> <c:TickMarkSkip>1</c:TickMarkSkip> <c:Type>Automatic</c:Type> </c:Eje> - <c:Eje> <c:Placement>Left</c: Place ment> < c: Axis I D> 1 </c: Axis I D> <c:ScalelD>1</c:ScalelD> <c:CrossingAxis>0</c:CrossingAxis> <c:CrossesAt>Minimum</c:CrossesAt> <c:CrossBetween>Between</c:CrossBetween>
- <c:Forma> - <s:Fuente> <s: FontName>Arial</s: FontName> <s:Size>18</s:Size> <s:AutoScale /> </s:Fuente> </c:Forma> - <c:Número> <c:SourceLinked /> <c:BuiltlnFormat>0</c:BuiltlnFormat> </c:Número> <c:MajorTick>Cross</c:MajorTick> <c:MinorTick>Cross</c:MinorTick> <c:Type>Value</c:Type> <c:MajorUnit>5</c:MajorUnit> </c:Eje> </c:PlotArea> </c:Gráfica> El documento 104 también tiene generalmente otros datos de documentos 114, los cuales incluyen, pero no están limitados a, informaciones de texto y formateo. De acuerdo con una implementación, cuando el programa de aplicación 102 es lanzado y el documento 104 es abierto, el objeto gráfico 112 es pasado a una interfase común de gráficos 116 del módulo de gráficos común 106 para la presentación. La interfase de gráficos común 116 determina el tipo de gráficos que está representado por el objeto gráfico 112. El tipo de gráficos que pueden ser procesados por la interfase de gráficos común 116, incluyen pero, sin estar limitados a, diagramas, gráficas o autoformas. El objeto de gráficos 112 incluye un identificador que indica que este objeto define una gráfica. Basados en el identificador de gráficas, la interfase de gráficos común 116 determina que el objeto gráfico 112 define una gráfica y la envía a un módulo de elaboración de gráficas común 118. El módulo de elaboración de gráficas común 118 incluye una máquina de traducción 120 que traduce el elemento gráfico 112 en la forma en que el módulo de gráficos 106 la utiliza para presentar la gráfica 110 a la pantalla 108. Específicamente, la máquina de traducción 120 traduce el objeto de gráficos 112 en una definición de gráficos basado en la forma 122. Como su nombre lo sugiere, la definición de la gráfica basada en la forma 122 define la gráfica en términos de formas, en vez de elementos gráficos. Como se describirá, el uso de formas puede mejorar el proceso de presentación de gráficas, la apariencia de las gráficas y la manipulación de las gráficas, permitiendo que interactúe un mecanismo común con los gráficos. En el proceso de traducción, la máquina de traducción 120 realiza un número de operaciones. Por ejemplo, la máquina de traducción 120 recupera los datos (por ejemplo, datos numéricos) que forman la gráfica 110 de la fuente de datos a la que se hizo referencia en el objeto gráfico 112. La fuente de datos puede ser el documento 104 mismo, o alguna otra fuente, tal como, pero sin limitarse a, otro documento, una base datos, un archivo, ia Internet o una fila. Además de los datos, la máquina de traducción 120 puede recuperar la información de formateo numérico que describe la forma en que son formateados los datos. La información de formateo numérico incluye, pero no está limitado a, un símbolo de monedas, un número de puntos decimales, un formato de porcentaje o fracción o un formato de fecha y hora.
La máquina de traducción 120 también traduce los elementos gráficos en formas, tales como líneas, rectángulos, círculos, triángulos y así sucesivamente. Una forma es una unidad de datos que simplemente representa Ja apariencia visual de un elemento gráfico y no está atado a, o depende de, los datos numéricos de la gráfica subyacentes. Por lo tanto, por ejemplo, una barra en un objeto gráfico 112 será traducida en un rectángulo en la definición de la gráfica basada en la forma 122; un eje de la gráfica será traducido en una línea, y así sucesivamente. Además, la máquina de traducción 120 agrupa las formas relacionadas seleccionadas para facilitar la manipulación de las formas relacionadas por parte del usuario. La interfase de gráficos común 116 proporciona funciones que permiten a un usuario interactuar con grupos de formas relacionadas. La máquina de traducción 120 aprovecha esas funciones agrupando los elementos gráficos relacionados tales como, pero sin limitarse a, marcas de datos relacionados y series de datos relacionados. Después de recuperar los datos, traducir los elementos gráficos en formas y agrupar las formas relacionadas, la máquina de traducción 120 genera la definición de la gráfica basada en las formas 122. Una implementación de la definición de gráfica basada en la forma 122 está compuesta de un código XML. Con propósitos de ilustración, a continuación se presenta un código XML de una definición de gráficas basada en la forma de ejemplo 122: - <group> <¡d>Chart</id> - <shapes> - <rect> <id>ChartArea</id> <style>margin-left:0;margin-top:9.75pt;width:501 t;height:319.5pt;z-índice:1 </style> - <border> <Solid>black</Solid> <We¡gh>0</Weight> </border> </rect> - <group> <id>Series 1</id> <style>margin-left:88.5pt;margin-top:60pt;width: 359.25 pt;he¡ght: 220.5pt;z-¡ndex:3</style> <coordorigin>438,743</coordorigin> <coordsize>479,294</coordsize> - <FMI> - <Pattern> <Title>Wide upward diagonal</Title> <Color>bIack</Color> <Color2>wh¡te</Color2> </Pattern> </Fill> - <border> <Solid>black</Sol¡d> <Weight>0</Weight> </border> - <shapes> - <rect> <id>Point 1</id> <style>left:438;top:839;width:80;height:198</style> </rect> - <rect> <id>Point 2</id> <style>left:638;top:743;width:80;height:294</style> </rect> - <rect> <id>Point 3</id> <style>left:837;top:931 ;width:80;height:106</style> </rect> </shapes> </group> - <group> <id>Y Axis</id> - <border> <SoIid>bIack</Solid> <Weight>0</Weight> </border> - <shapes> - <line> <¡d>Y Axis Line</id> <style>z-index:4</style> <from>45pt,32.25pt</from> <to>45pt,280.5pt</to> </line> - <line> <id>Y Axis Tick ark 1</¡d> <style>z-index:5</style> <from>40pt,281 pt</from> <to>48pt,281 pt</to> </line> - <line> <id>Y Axis Tick Mark 2</id> <style>z-index:6</style> <from>40pt,256pt</from> <to>48pt,256pt</to> </line> - <line> <id>Y Axis Tick Mark 3</id> <style>z-index:7</style> <from>40pt,231 pt</from> <to>48pt,231pt</to> </line> - <line> <id>Y Axis Tick Wlark 4</id> <style>z-index:8</style> <from>40pt,207pt</from> <to>48pt,207pt</to> </Iine> - <Hne> <id>Y Axis Tick Wlark 5</id> <style>z-index:9</style> <from>40pt,182pt</from> <to>48pt,182pt</to> </line> - <line> <id>Y Axis Tick lark 6</id> <style>z-index:10</style> <from>40pt,157pt</from> <to>48pt,157pt</to> </Iine> - <line> <id>Y Axis Tick Wlark 7</id> <style>z-index:11 </style> <from>40pt,132pt</from> <to>48pt,132pt</to> </line> - <line> <id>Y Axis Tick ark 8</id> <style>z-index:12</style> <from>40pt,108pt</from> <to>48pt,108pt</to> </line> - <line> <id>Y Axis Tick Mark 9</id> <style>z-index:13</style> <from>40pt,83pt</from> <to>48pt,83pt</to> </line> - <line> <id>Y Axis Tick Mark 10</id> <style>z-index:14</style> <from>40pt,57pt</from> <to>48pt,57pt</to> </Iine> - <line> <¡d>Y Axis Tick Mark 11</id> <style>z-index:15</style> <from>40pt,33pt</from> <to>48pt,33pt</to> </I¡ne> - <line> <id>Y Axis Tick ark 12</id> <style>z-index:16</style> <from>38.25pt,281 pt</from> <to>49.5pt,281 pt</to> </line> - <line> <¡d>Y Axis Tick Mark 13</¡d> <style>z-index:17</style> <from>38.25pt,157pt</from> <to>49.5pt,157pt</to> </line> - <line> <id>Y Axis Tick Mark 14</id> <style>z-index:18</style> <from>38.25pt,33pt</from> <to>49.5pt,33pt</to> </line> </shapes> </group> - <l¡ne> <id>X Axis</id> <style>z-index:19</style> <from>44.25pt,281 pt</from> <to>492.75pt,281pt</to> -<border> <Solid>black</Solid> <Weight>0</We'ight> </border> </line> -<group> <id>Series 1 DataLabels</id> <style>margin-left:'l 06.5pt;margin-superior:33pt;width:324pt;height:164.25pt;z-index:20</style> <coordorigin>462,707></coordorigin> <coordsize>432,219</coordsize> - <Font> <FontName>Arial</FontName> <Size>18</Size> <AutoScale /> </Font> -<shapes> - <rect> <id>Series 1 DataLabel 1</id> <style>Ieft:462;top:803;width:33;height:31 ;wrap-style: none;text-ancla:superior</style> - <textbox style = "fit-shape-to-text:t" inset="0,0,0,0"> <div style="text-align:left">6.0</div> </textbox> </rect> - <rect> <id>Series 1 DataLabel 2</id> <style>left:661 ;top:707;width:33;height:31 ;wrap-style:none;text-ancla:superior</style> - <textbox style="fit-shape-to-text:t" inset="0,0,0,0"> <div style="text-align: left">8.9</div> </textbox> </rect> - <rect> <id>Series 1 DataLabel 3</id> <style>Ieft:861 ;top:895; width:33;height:31 ;wrap-style: none;text-ancla:superior</style> - <textbox style="f it-shape-to-text:t" inset="0, 0,0,0 "> <div style = "text-align:left">3.2</div> </textbox> </rect> </shapes> </group> - <group> <id>Y Axis Labels</id> <style>margin-Ieft:10.5pt;margin-top:22.5pt;width: 19.5pt;height:271.5pt;z-index:21 </style> <coordorigin>334,693</coordorigin> <coordsize>26,362</coordsize> - <Font> <FontName>Arial</FontName> <Size>18</Size> <AutoScale /> </Font> - <shapes> - <rect> <id>Y Axis Labels 0</id> <style>left:347;top:1024;width:13;height:31 ;wrap-style:none;text-ancla:superior</style> - <textbox style="fit-shape-to-text:t" inset="0,0,0,0"> <di style="text-align:left">0</div> </textbox> </rect> - <rect> <id>Y Axis Labels 5</id> <style>left:347;top:858; width: 13;height:31 ;wrap-style:none;text-ancla:superior</style> - <textbox style = "fit-shape-to-text:t" inset="0,0,0,0"> <div style="text-align:left">5</div> </textbox> </rect> - <rect> <id>Y Axis Labels 10</id> <style>left:334;top:693;width:26;height:31 ;wrap-style:none;text-ancla:superior</style> stroked="f"> - <textbox style="fit-shape-to-text:t" inset="0,0,0,0"> <div style="text-align:left">10</di > </textbox> </rect> </shapes> </group> - <group> <id>X Axis Labels</id> <style>margin-left:112.5pt;margin-top:296.25pt; idth:312pt;height:23.25pt;z-index:22</style> <coordorigin>470,1058</coordorigin> <coordsize>416,31</coordsize> - <shapes> - <rect> <id>X Axis Labeis Category 1</id> <style>left:470;top:1058;width:15;height:31 ;wrap-style:none;text-ancIa:superior</style> - <textbox style="f it-shape-to-text:t" inset="0,0,0,0"> <div style= "text-align:left">A</div> </textbox> </rect> - <rect> <id>X Axis Labels Category 2</id> <style>left:670;top:1058;width:16;height:31 ;wrap-style: nonejtext-ancla:superior</st le> - <textbox style="fit-shape-to-text:t" inset="0,0,0,0"> <div style="text-align:left">B</di > </textbox> </rect> - <rect> <¡d>X Axis Labels Category 3</id> <style>left:869;top:1058;width:17;height:31 ;wrap-sty le: none;text-ancla:superior</style> - <textbox style = "fit-shape-to-text:t" inset="0,0,0,0"> <div style = "text-align: left">C</div> </textbox> </rect> </shapes> </group> </shapes> </group> La interfase de gráficos 116 recibe la definición de la gráfica basada en la forma 122 y presenta la gráfica 110 en la pantalla 108, como un conjunto de formas especificados por la definición de gráficas basada en la forma. La interfase de gráficas común 116 generalmente realiza la presentación, invocando al sistema operativo o las funciones del controlador de pantalla. Por ejemplo, en el sistema operativo WINDOWS, la interfase de gráficos común 116 puede invocar a la interfase de pantalla de gráficos (GDI + ). Como se muestra, el módulo de gráficos común 106 incluye un conjunto de servicios comunes de gráficos 124. Los servicios comunes de gráficos 124 incluyen servicios a los que se puede acceder por medio del programa de aplicación para manipular la gráfica 110. Los servicios comunes de gráficos 124 proporcionan una o más interfases de programación de aplicación (API) para tener acceso a los servicios. Debido a que el módulo común de gráficos 106 presenta formas, los servicios de gráficos 124 pueden ofrecer funciones de alto nivel para manipular la gráfica 110. Los servicios de gráficos 124 pueden, por ejemplo, realizar funciones de gráficos de vector en formas dentro de la gráfica. Con propósitos de ilustración, un rectángulo puede ser movido fácilmente invocando una sola función de los servicios de gráficos 124 que mueve una forma, en vez de invocar numerosas funciones de bajo nivel para volver a dibujar el rectángulo en una ubicación nueva. Además, el módulo común de gráficos 106 es común para programas de aplicación múltiples, de modo que la manipulación/edición de formas y apariencia será consistente entre los programas de aplicación. Por lo tanto, el módulo común de gráficos 106 puede presentar una interfase del usuario de gráficos común para editar formas en la gráfica 110, independientemente del tipo del programa de aplicación 102. El módulo común de gráficos 106 también incluye otros servicios 126 para presentar y/o manipular el contenido del documento 104 en la pantalla 108. Los otros servicios 126 pueden incluir, pero no están limitados a, distribución de memoria y manipulaciones relacionadas con el texto. Después de que es presentada la gráfica 110, el usuario puede manipular las formas de la gráfica 110, o los datos subyacentes de la gráfica 110. La mayor parte de los comandos para editar la gráfica son pasados a un componente de elaboración de gráficos común 128. El componente de elaboración de gráficos común 128 entonces puede actuar sobre el comando o pasar de regreso el comando a los servicios de gráficos 124. Antes de pasar un comando a los servicios de gráficos 124, si es necesario, el componente de elaboración de gráficos común 128 puede modificar el comando. Si el usuario edita los datos subyacentes de la gráfica y por lo tanto, cambia el objeto gráfico 112, la máquina de traducción 118 automáticamente traduce el objeto gráfico 112 nuevamente y presenta una definición de gráficos basada en la forma actualizada 122. Cuando el usuario manipula los datos subyacentes de la gráfica 110, un componente de elaboración de gráficos común 128 proporciona funciones para las manipulaciones. En el pasado, cuando el usuario manipulaba una gráfica, el programa de aplicación 102 realizaba las manipulaciones. Esto daba como resultado diferentes presentaciones o comportamientos de la gráfica e interacciones del usuario diferentes entre diferentes programas de aplicación. En las implementaciones aquí descritas, el componente de elaboración de gráficos común 128 proporciona un conjunto de funciones común para manipular los datos de la gráfica subyacente que forman la gráfica 110. Como resultado, cuando el usuario edita los datos de la gráfica subyacentes, el comportamiento de la gráfica 110 es consistente en todos los programas de aplicación. De una manera benéfica, aunque la gráfica 110 es presentada utilizando la definición de gráficos basada en la forma 122, todavía son mantenidos los datos subyacentes de la gráfica en (es decir, no son eliminados de) el documento 104 en el objeto de gráficos 112. El componente de elaboración de gráficos común 128 utiliza el objeto gráficos 112 cuando el usuario edita los datos subyacentes de la gráfica (por ejemplo, los datos numéricos). Por lo tanto, el usuario puede editar formas de la gráfica 110 por medio de la ¡nterfase común de gráficos 116, y editar los datos subyacentes de la gráfica por medio del componente de elaboración de gráficos común 128. Aún cuando el documento 104 esté cerrado, el objeto de gráficos 112 es mantenido en el documento 104. Como resultado, el usuario puede editar la gráfica 110, como una gráfica y/o como una imagen. En una implementación particular, la definición de la gráfica basada en la forma 122 puede ser guardada para uso futuro. En esta implementación, la definición de la gráfica basada en la forma 122 podría ser guardada con el documento 104 o en una memoria temporal (no mostrada) antes de que sea cerrado el documento 104. Entonces, cuando el documento 104 se vuelve a abrir posteriormente, la definición de la gráfica basada en la forma 122 es recuperada de la memoria y utilizada para presentar la gráfica 110. En esta implementación, la máquina de traducción 120 no necesitaría traducir el objeto gráfico 112 cada vez que es abierto el documento 104.
El término módulo es utilizado en un sentido general para describir un componente que se puede operar para realizar una o más funciones designadas. Un módulo puede ser implementado de diferentes modos y formas. Por ejemplo, un módulo puede ser implementado como un hardware, software, firmware, o en varias combinaciones de hardware, software y/o firmware, dependiendo de factores tales como la velocidad, costo, tamaño, etc. Por ejemplo y sin limitación, en una implementación cada uno de los módulos del sistema 100 comprende un software, tal como una librería de enlace dinámico (DLL), que es almacenado en un medio legible por computadora y ejecutado en un sistema de cómputo, tal como el sistema de cómputo que se describe más adelante con respecto a la figura 6. Operaciones de Ejemplo La figura 2 ilustra un algoritmo de elaboración de gráficos común 200 que puede ser llevado a cabo por el sistema de elaboración de gráficos 100 mostrado en la figura 1. El algoritmo de elaboración de gráficos común 200 también puede ser llevado a cabo por sistemas diferentes al sistema de elaboración de gráficos común 100. El algoritmo de elaboración de gráficos 200 incluye operaciones de ejemplo para utilizar formas para presentar un gráfico asociado con un documento, mientras mantiene un objeto de gráficos para hacer posible que el usuario edite los datos subyacentes de la gráfica. Inicialmente, una operación de recuperación 202 recupera un objeto gráfico que proporciona una definición de la gráfica. Generalmente, el objeto gráfico es recuperado del documento. El objeto gráfico define partes de la gráfica con elementos de gráfica, tales como barras, ejes, marcas, datos numéricos y así sucesivamente, los cuales están relacionados inherentemente con una gráfica. El objeto gráfico proporciona referencias para las fuentes de datos de los datos subyacentes de la gráfica, sobre los cuales está basada la gráfica. Una operación de traducción 204 traduce el objeto gráfico en una definición de gráfica basada en las formas, de modo que la gráfica puede ser presentada y editada utilizando formas. Las formas especifican la apariencia visual (es decir, tamaño, ubicación y color) de los elementos gráficos. Una marca de datos u otro elemento de texto también puede ser convertido en una forma creando un rectángulo con el texto o marca correspondiente en el rectángulo. Un texto o rectángulo de marca pueden ser editados para ser llenados con un color especificado, o tener un borde u otros efectos gráficos apropiados para un rectángulo. Una operación de traducción de ejemplo 204 se muestra en la figura 3, y se describe más adelante. Después de que el objeto de gráficos es traducido en una definición basada en la forma, una operación de presentación 206 presenta la gráfica utilizando las formas especificadas en la definición basada en las formas. Generalmente, la gráfica es presentada en una ubicación especificada por el documento. Se pueden especificar por medio de la definición basada en la forma, las ubicaciones, colores, agrupamientos, dimensiones y otros atributos de las formas dentro de la gráfica. Aunque la gráfica es presentada con formas, el objeto gráfico persiste en asociación con el documento. En otras palabras, el objeto gráfico no es disociado del documento. Debido a que el objeto gráfico es mantenido, un usuario puede continuar editando los datos subyacentes de la gráfica. La operación de traducción 204 será realizada cuando el usuario edita el objeto gráfico editando los datos subyacentes de la gráfica. Regresando a la figura 3, se muestra una operación de traducción 204 de ejemplo. La operación de traducción 204 puede ser realizada en cualquier momento relevante o en respuesta a un evento relevante. Por ejemplo, y sin limitación, la operación de traducción 204 se puede realizar automáticamente siempre que el documento sea abierto, o cuando la gráfica es copiada de un documento e importada en otro documento. Para facilidad de ilustración, la operación de traducción 204 se explica con referencia a la figura 4. Por lo tanto, para propósitos de ilustración, se supondrá que el objeto gráfico y la definición basada en las formas correspondientes definen la gráfica 400 mostrada en la figura 4. Inicialmente, una operación de determinación 302 determina el tipo de la gráfica 400. En el caso particular mostrado, el objeto gráfico incluye un identificador de tipo de gráfica que indica que la gráfica es una gráfica de columnas. Por lo tanto, la operación de determinación 302 determina que la gráfica es una gráfica de columnas. El tipo de gráfica es determinado debido a que el tipo de gráfica es generalmente importante para darle significado a los valores de datos, e indica la forma en que los elementos gráficos serán traducidos en formas. Una operación de recuperación 304 recupera entonces los datos subyacentes que sirven como base para la gráfica. Generalmente, y sin limitación, los datos subyacentes de la gráfica incluyen, valores de datos, marcas y formatos de datos, tales como tipos de monedas o lugares decimales. Los datos subyacentes son recuperados de una o más fuentes de datos especificadas por el objeto gráfico. Por lo tanto, haciendo referencia a la gráfica 400, los datos subyacentes que son recuperados incluyen marcas de datos 402a (6.0), la marca de datos 402b (8.9), y la marca de datos 402c (3.2). Una operación de traducción 306 traduce entonces los elementos gráficos en formas correspondientes. Haciendo referencia a la gráfica 400, una primera columna del objeto gráfico, por ejemplo, es traducida en un rectángulo 404a, cuyas dimensiones están basadas en los valores de datos asociados con la columna. La operación de traducción 306 determina las dimensiones del rectángulo 404a identificando primero la columna 404b con un valor más grande (en este caso 8.9), y escalando linealmente el rectángulo 404a basado en la altura de la gráfica. De un modo similar, la operación de traducción 306 traduce las otras dos columnas en los rectángulos asociados 404b y 404c. Una operación de agrupación 307 agrupa entonces las formas relacionadas. Es mejor agrupar las formas que un usuario pueda desear editar o manipular en la forma de un grupo. Por ejemplo, las marcas de datos 402a, 402b y 402c pueden ser agrupadas. Como otro ejemplo, los rectángulos 404a, 404b y 404c pueden ser agrupados. La operación de agrupación 307 inserta un indicador del grupo en una definición de la gráfica basada en la forma que indica cuales formas se encuentran en un grupo. Después de que las formas relacionadas son agrupadas, el módulo común de gráficos (por ejemplo, el módulo común de gráficos 104 de la figura 1) puede aplicar efectos del grupo basados en la entrada del usuario. Por ejemplo, si el usuario desea cambiar el color de todos los rectángulos de la gráfica 400, el usuario solamente necesita seleccionar uno de los rectángulos y cambiar el color. Dichos grupos pueden ser útiles, debido a que el usuario puede entonces manipular cada forma de un grupo haciendo un clic en una forma en el grupo una sola vez. Si el usuario desea manipular una sola forma del grupo, entonces el usuario hace un clic doble en la forma. Aparato de Cómputo de Ejemplo Haciendo referencia a la figura 5, aquí se describe un sistema de ejemplo para implementar las operaciones, el cual incluye un aparato de cómputo de uso general en la forma de una computadora personal convencional 20, que incluye una unidad de procesamiento 21, una memoria del sistema 22 y un bus del sistema 23. El bus del sistema 23 enlaza varios componentes del sistema incluyendo la memoria al sistema 22 y la unidad de procesamiento 21. El bus del sistema 23 puede ser cualquiera de varios tipos de estructuras del bus incluyendo un bus de memoria o un controlador de bus, un bus periférico y un bus local utilizando cualquiera de una variedad de arquitecturas del bus. El sistema de memoria 22 incluye una memoria solo de lectura (ROM) 24 y una memoria de acceso aleatorio (RAM) 25. Un sistema de entrada/salida básico 26 (BIOS), que contiene las rutinas básicas que ayudan a transferir información entre los elementos dentro de la computadora personal 20, por ejemplo, durante el arranque, es almacenado en la memoria ROM 24. Tal y como se ilustra en este ejemplo, la computadora personal 20 incluye además una unidad de disco duro 27 para leer y escribir en el disco duro (no mostrado), una unidad de disco magnético 28 para leer o escribir en un disco magnético removible 29, y una unidad de disco óptico 30 para leer o escribir en un disco óptico removible 31, tal como un CD-ROM, DVD, u otros medios ópticos similares. La unidad de disco duro 27, la unidad de disco magnético 28 y la unidad de disco óptico 30 son conectadas al bus del sistema 23 por medio de la interfase de la unidad de disco duro 32, una interfase de unidad de disco magnético 33 y una interfase de unidad de disco óptico 34, respectivamente. Estas unidades de ejemplo y sus medios legibles por computadora asociados proporcionan el almacenamiento no volátil de las instrucciones legibles por computadora, estructuras de datos, programas de cómputo y otros datos para la computadora personal 20. Aunque el entorno de ejemplo aquí descrito emplea un disco duro, un disco magnético removible 29 y un disco óptico removible 31, deberá apreciarse por aquellos expertos en la técnica, que otros tipos de medios legibles por computadora los cuales pueden almacenar datos y a los que se pueda tener acceso por una computadora, tales como cassettes magnéticos, tarjetas de memoria instantánea, discos digitales de video, memorias de acceso aleatorio (RAMs), memoria solo de lectura (ROMs) y similares, también pueden ser utilizados en el entorno operativo de ejemplo. Un número de programas de cómputo puede ser almacenado en el disco duro, el disco magnético 29, el disco óptico 31, la memoria ROM 24 o la memoria RAM 25, incluyendo un sistema operativo 35, uno o más programas de aplicación 36, otros programas 37 y los datos del programa 38. Un usuario puede ingresar comandos e información en la computadora personal 20 a través de los dispositivos de entrada, tales como un teclado 40 y un dispositivo de señalamiento 42 (tal como un ratón). Una cámara 55 (tal como una cámara de video o digital/todavía electrónica, o un escáner de película/fotográfico) con capacidad para capturar datos de imagen también puede ser incluido como un dispositivo de entrada para la computadora personal 20. Los datos de imágenes son ingresados en la computadora 20, por medio de una interfase de cámara apropiada 57. En este ejemplo, la interfase 57 es conectada al bus del sistema 23, permitiendo de este modo que las imágenes sean enrutadas y almacenadas en la memoria RAM 25, o uno de los dispositivos de almacenamiento de datos asociados con la computadora 20. Sin embargo, se deberá observar que los datos de imagen pueden ser ingresados en la computadora 20 también desde cualquier medio legible por computadora anteriormente mencionado, sin requerir el uso de la cámara 55. Otros dispositivos de entrada (no mostrados) pueden incluir un micrófono, palanca, almohadilla de juegos, plato de satélite, un escáner o similar. Estos y otros dispositivos de entrada, con frecuencia son conectados a la unidad de procesamiento 21 a través de una interfase de puerto de serie 46 que está conectada al bus del sistema, pero pueden ser conectados por otras interfases, tales como un puerto paralelo, puerto de juegos, o un bus de serie universal (USB), etc. Un monitor 47 u otro tipo de dispositivo de pantalla también son conectados al bus del sistema 23 por medio de una interfase, tal como un adaptador de video 45. Además del monitor, las computadoras personales generalmente incluyen otros dispositivos periféricos de salida (no mostrados), tales como bocinas e impresoras. La computadora personal 20 puede operar en un entorno de red utilizando conexiones lógicas a una o más computadoras remotas, tales como una computadora remota 49. La computadora remota 49 puede ser otra computadora personal, un servidor, un enrutador, una PC de red, un aparato semejante u otro nodo de red común, y generalmente incluye muchos o todos los elementos anteriormente descritos en relación con la computadora personal 20. Las conexiones lógicas ilustradas en la figura 5 incluyen una red de área local (LAN) 51 y una red de área ancha (WAN) 52. Dichos entornos de red son un lugar común en las oficinas, redes de cómputo de las empresas, Intranets y en la Internet. Cuando se utiliza en un entorno de red LAN, la computadora personal 20 es conectada a la red local 51 a través de una interfase de red o adaptador 53. Cuando es utilizada en un entorno de red WAN, la computadora personal 20 generalmente incluye un módem 54 u otros medios para establecer comunicaciones en una red de área ancha 52, tal como la Internet. El módem 54, el cual puede ser interno o externo, es conectado al bus del sistema 23 por medio de la interfase de puerto de serie 46. En un entorno de red, los programas de cómputo ilustrados en relación con la computadora personal 20, o porciones de los mismos, pueden ser almacenados en un dispositivo de almacenamiento de memoria remoto. Como se podrá apreciar, las conexiones de red mostradas son de ejemplo y que se pueden utilizar otros medios para establecer un enlace de comunicación entre las computadoras. Varios módulos y técnicas pueden ser descritos en la presente descripción y en el contexto general de las instrucciones ejecutables por computadora, tales como módulos de programa, ejecutados por una o más computadoras u otros aparatos. Generalmente, los módulos de programa incluyen rutinas, programas, objetos, componentes, estructuras de datos, etc., que realizan tareas particulares o implementan tipos de datos abstractos particulares. Generalmente, la funcionalidad de los módulos de programa puede ser combinada o distribuida, según se desee en diferentes modalidades. Una implementación de estos módulos y técnicas puede ser almacenada o transmitida por alguna forma de medios legibles por computadora. Los medios legibles por computadora pueden ser cualquier medio disponible al que se pueda tener acceso por medio de una computadora. A modo de ejemplo y no de limitación, los medios legibles por computadora pueden comprender "medios de almacenamiento de computadora" y "medios de comunicaciones". Los "medios de almacenamiento de computadora" incluyen medios volátiles y no volátiles, removibles y no removibles implementados en cualquier método o tecnología para el almacenamiento de información, tales como instrucciones legibles por computadora, estructuras de datos, módulos de programa u otros datos. Los medios de almacenamiento de computadora incluyen, pero no están limitados a, memorias RAM, ROM, EEPROM, memoria instantánea, u otra tecnología de memoria, CD-ROM, discos digitales versátiles (DVD) u otros medios de almacenamiento óptico, cassettes magnéticos, cintas magnéticas, almacenamiento de discos magnéticos u otros dispositivos de almacenamiento magnéticos, o cualquier otro medio el cual puede ser utilizado para almacenar la información deseada y al cual se pueda tener acceso por medio de una computadora. Los "medios de comunicación" generalmente incorporan instrucciones legibles por computadoras, estructuras de datos, módulos de programa u otros datos en una señal de datos modulada, tal como una onda portadora u otro mecanismo de transporte. Los medios de comunicación también incluyen cualquier medio de entrega de información. El término "señal modulada de datos" significa una señal que tiene una o más de sus características ajustadas o cambiadas de un modo tal como para codificar información en la señal. A modo de ejemplo y no de limitación, los medios de comunicación incluyen medios cableados, tales como redes cableadas o conexiones de cable directas y medios inalámbricos, tales como medios acústicos, RF, infrarrojos y otros medios inalámbricos. Las combinaciones de cualquiera de las anteriores también están incluidas dentro del alcance de los medios legibles por computadora. Aunque la modalidad de operación de ejemplo se describe en términos de flujos de operación en una computadora personal, un experto en la técnica se dará cuenta de que la presente invención puede ser incorporada en cualquier plataforma o entorno que procesa y/o comunica señales de video. Los ejemplos incluyen tanto aparatos programables como no programables, tales como hardwares que tienen un propósito dedicado, tales como un hardware para conferencias de video, firmware, aparatos semiconductores, computadoras manuales, computadoras para la palma de la mano, teléfonos celulares y similares. Aunque algunos métodos y sistemas de ejemplo han sido ilustrados en los dibujos adjuntos y descritos en la Descripción Detallada anterior, deberá quedar entendido que los métodos y sistemas mostrados y descritos no están limitados a una implementacion particular aquí descrita, sino en vez de ello tienen la capacidad de readaptacíones numerosas, modificaciones y substituciones sin salirse del espíritu aquí establecido.