Structure des dessins

From Apache OpenOffice Wiki
Jump to: navigation, search
doc OOo
Book.png


Apache OpenOffice ne limite pas le nombre de pages que peut contenir un dessin. Vous pouvez concevoir chaque page individuellement. En outre, vous pouvez ajouter autant d'éléments de dessin que vous le souhaitez à une page.

Pages

Les pages d'un dessin sont disponibles via la liste DrawPages. Vous pouvez accéder aux différentes pages soit par leur numéro, soit par leur nom. Si un document contient une seule page, nommée Slide 1, les exemples suivants seront équivalents.

Exemple 1 :

Dim Doc As Object
Dim Page As Object
 
Doc = StarDesktop.CurrentComponent
Page = Doc.drawPages(0)

Exemple 2 :

Dim Doc As Object
Dim Page As Object
 
Doc = StarDesktop.CurrentComponent
Page = Doc.drawPages.getByName("Slide 1")

Dans l'exemple 1, on accède à la page par son numéro (la numérotation commençant à 0). Dans le second, on y accède par son nom et à l'aide de la méthode getByName.

Dim sUrl As String, sFilter As String
Dim sOptions As String
Dim oSheets As Object, oSheet As Object
 
   oSheets = oDocument.Sheets
 
   If oSheets.hasByName("Link") Then
      oSheet = oSheets.getByName("Link")
   Else
      oSheet = oDocument.createInstance("com.sun.star.sheet.Spreadsheet")
      oSheets.insertByName("Link", oSheet)
      oSheet.IsVisible = False
   End If

L'appel ci-dessus retourne un objet Page prenant en charge le service com.sun.star.drawing.DrawPage. Ce service reconnaît les propriétés suivantes :

BorderLeft (Long)
bordure gauche en centièmes de millimètre.
BorderRight (Long)
bordure droite en centièmes de millimètre.
BorderTop (Long)
bordure supérieure en centièmes de millimètre.
BorderBottom (Long)
bordure inférieure en centièmes de millimètre.
Width (Long)
largeur de page en centièmes de millimètre.
Height (Long)
hauteur de page en centièmes de millimètre.
Number (Short)
nombre de pages (la numérotation commençant à 1), en lecture seule.
Orientation (Enum)
orientation de la page correspondant à l'énumération com.sun.star.view.PaperOrientation).

En cas de modification de ces paramètres, toutes les pages du document sont affectées.

L'exemple suivant définit la taille de page du dessin qui vient d'être ouvert sur 20 × 20 centimètres, avec une marge de 0,5 centimètre :

Dim Doc As Object
Dim Page As Object
 
Doc = StarDesktop.CurrentComponent
Page = Doc.drawPages(0)
 
Page.BorderLeft = 500
Page.BorderRight = 500
Page.BorderTop = 500
Page.BorderBottom = 500
 
Page.Width = 20000
Page.Height = 20000

Propriétés élémentaires des objets de dessin

Les objets de dessin comprennent des formes (rectangles, cercles, etc.), des lignes et des objets texte. Ils partagent tous un certain nombre de caractéristiques communes et prennent en charge le service com.sun.star.drawing.Shape. Ce service définit les propriétés Size et Position d'un objet de dessin.


                   D'autres services fournis par Apache OpenOffice Basic permettent de modifier ces propriétés, en appliquant du formatage ou des remplissages par exemple. Les options de formatage disponibles dépendent du type d'objet de dessin.

L'exemple suivant crée et insère un rectangle dans un dessin :

Dim Doc As Object
Dim Page As Object
Dim RectangleShape As Object
Dim Point As New com.sun.star.awt.Point
Dim Size As New com.sun.star.awt.Size
 
Doc = StarDesktop.CurrentComponent
Page = Doc.drawPages(0)
 
Point.x = 1000
Point.y = 1000
Size.Width = 10000
Size.Height = 10000
 
RectangleShape = Doc.createInstance("com.sun.star.drawing.RectangleShape")
RectangleShape.Size = Size
RectangleShape.Position = Point
 
Page.add(RectangleShape)

Dans cet exemple, le document ouvert est déterminé à l'aide de l'appel StarDesktop.CurrentComponent. L'objet Document déterminé de cette manière retourne la première page du dessin via l'appel drawPages(0).

Les structures Point et Size contenant le point d'origine (angle gauche) et la taille de l'objet de dessin sont ensuite initialisées. Les longueurs sont spécifiées en centièmes de millimètre.

À l'aide de l'appel Doc.createInstance, le code du programme crée ensuite l'objet de dessin rectangulaire tel qu'il a été spécifié par le service com.sun.star.drawing.RectangleShape. L'objet de dessin est ensuite assigné à une page à l'aide d'un appel Page.add.

Propriétés de remplissage

Cette section décrit quatre services et, pour chacun, l'exemple de code utilise un élément de forme rectangulaire associé à différents types de formatage. Les propriétés de remplissage sont combinées dans le service com.sun.star.drawing.FillProperties.


                   Au moment de remplir une zone, Apache OpenOffice reconnaît quatre types de formatage principaux. Le cas le plus simple est celui d'un remplissage uni. Les options définissant des dégradés de couleurs et des hachures permettent de créer d'autres couleurs. Le quatrième cas de figure consiste à projeter des images existantes dans la zone à remplir.

Le mode remplissage d'un objet de dessin se définit avec la propriété FillStyle. Les valeurs autorisées sont définies dans com.sun.star.drawing.FillStyle.

Remplissages unis

La principale propriété des remplissages unis est :

FillColor (Long)
couleur de remplissage de la zone.

Pour utiliser le mode Remplissage, vous devez définir la propriété FillStyle sur le mode de remplissage SOLID.

L'exemple suivant crée une forme rectangulaire et la remplit de rouge (valeur RVB 255, 0, 0) :

Dim Doc As Object
Dim Page As Object
Dim RectangleShape As Object
Dim Point As New com.sun.star.awt.Point
Dim Size As New com.sun.star.awt.Size
 
Point.x = 1000
Point.y = 1000
Size.Width = 10000
Size.Height = 10000
 
Doc = StarDesktop.CurrentComponent
Page = Doc.drawPages(0)
 
RectangleShape = Doc.createInstance("com.sun.star.drawing.RectangleShape")
RectangleShape.Size = Size
RectangleShape.Position = Point
 
RectangleShape.FillStyle = com.sun.star.drawing.FillStyle.SOLID
RectangleShape.FillColor = RGB(255,0,0)
 
Page.add(RectangleShape)

Dégradé de couleurs

Si vous définissez la propriété FillStyle sur GRADIENT, vous pouvez appliquer un dégradé de couleurs à toutes les zones à remplir dans un document Apache OpenOffice.

Pour appliquer un dégradé de couleurs prédéfini, il suffit d'assigner le nom associé de la propriété FillTransparenceGradientName. Pour définir votre propre dégradé de couleurs, vous devez constituer une structure com.sun.star.awt.Gradient à assigner à la propriété FillGradient. Cette propriété fournit les options suivantes :

Style (Enum)
type de dégradé (linéaire ou radial, par exemple), avec des valeurs par défaut correspondant à com.sun.star.awt.GradientStyle.
StartColor (Long)
couleur de début du dégradé de couleurs.
EndColor (Long)
couleur de fin du dégradé de couleurs.
Angle (Short)
angle du dégradé de couleurs en dixièmes de degré.
XOffset (Short)
coordonnée X correspondant au point de départ du dégradé de couleurs, exprimée en centièmes de millimètre.
YOffset (Short)
coordonnée Y correspondant au point de départ du dégradé de couleurs, exprimée en centièmes de millimètre.
StartIntensity (Short)
intensité de StartColor exprimée en pourcentage (dans Apache OpenOffice Basic, vous pouvez également spécifier des valeurs supérieures à 100 %).
EndIntensity (Short)
intensité de EndColor exprimée en pourcentage (dans Apache OpenOffice Basic, vous pouvez également spécifier des valeurs supérieures à 100 %).
StepCount (Short)
nombre de couleurs intermédiaires utilisées par Apache OpenOffice pour calculer les dégradés.

L'exemple suivant illustre l'utilisation de dégradés de couleurs avec la structure com.sun.star.awt.Gradient :

Dim Doc As Object
Dim Page As Object
Dim RectangleShape As Object
Dim Point As New com.sun.star.awt.Point
Dim Size As New com.sun.star.awt.Size
Dim Gradient As New com.sun.star.awt.Gradient 
 
Point.x = 1000
Point.y = 1000
Size.Width = 10000
Size.Height = 10000
 
Doc = StarDesktop.CurrentComponent
Page = Doc.drawPages(0)
 
RectangleShape = Doc.createInstance("com.sun.star.drawing.RectangleShape")
RectangleShape.Size = Size
RectangleShape.Position = Point
Gradient.Style = com.sun.star.awt.GradientStyle.LINEAR
Gradient.StartColor = RGB(255,0,0)
Gradient.EndColor = RGB(0,255,0)
Gradient.StartIntensity = 150   
Gradient.EndIntensity = 150
Gradient.Angle = 450
Gradient.StepCount = 100
 
RectangleShape.FillStyle = com.sun.star.drawing.FillStyle.GRADIENT
RectangleShape.FillGradient = Gradient
 
Page.add(RectangleShape)

Cet exemple crée un dégradé de couleurs linéaire (Style = LINEAR). Le dégradé commence en rouge (StartColor) dans l'angle supérieur gauche et finit, en suivant un angle de 45 degrés (Angle), en vert (EndColor) dans l'angle inférieur droit. L'intensité des couleurs initiale et finale est de 150 pour cent (StartIntensity et EndIntensity) , d'où un effet de couleurs apparemment plus claires que les valeurs spécifiées dans les propriétés StartColor et EndColor. Le dégradé de couleurs est constitué de cent couleurs intermédiaires (StepCount).

Hachures

Pour créer un remplissage hachuré, vous devez définir la propriété FillStyle sur HATCH. Le code de programme de définition des hachures ressemble beaucoup à celui des dégradés de couleurs. La structure auxiliaire, com.sun.star.drawing.Hatch en l'occurrence, sert ici à définir l'apparence des hachures. La structure de hachures possède les propriétés suivantes :

Style (Enum)
type de hachure (simple, quadrillée ou quadrillée en diagonale), avec des valeurs par défaut correspondant à com.sun.star.awt.HatchStyle).
Color (Long)
couleur des lignes.
Distance (Long)
distance entre les lignes en centièmes de millimètre.
Angle (Short)
angle de la hachure en dixièmes de degré.

L'exemple suivant illustre l'utilisation d'une structure de hachures :

Dim Doc As Object
Dim Page As Object
Dim RectangleShape As Object
Dim Point As New com.sun.star.awt.Point
Dim Size As New com.sun.star.awt.Size
Dim Hatch As New com.sun.star.drawing.Hatch
 
Point.x = 1000
Point.y = 1000
Size.Width = 10000
Size.Height = 10000
 
Doc = StarDesktop.CurrentComponent
Page = Doc.drawPages(0)
 
RectangleShape = Doc.createInstance("com.sun.star.drawing.RectangleShape")
RectangleShape.Size = Size
RectangleShape.Position = Point
 
RectangleShape.FillStyle = com.sun.star.drawing.FillStyle.HATCH
 
Hatch.Style = com.sun.star.drawing.HatchStyle.SINGLE
Hatch.Color = RGB(64,64,64)
Hatch.Distance = 20
Hatch.Angle = 450
 
RectangleShape.FillHatch = Hatch
 
Page.add(RectangleShape)

Ce code crée une structure de hachures simple (HatchStyle = SINGLE) et fait pivoter les lignes de cette structure sur 45 degrés (Angle). Les lignes sont gris foncé (Color) et espacées de 0,2 millimètres (Distance).

Bitmaps

Pour utiliser une projection bitmap comme remplissage, vous devez définir la propriété FillStyle sur BITMAP. Si le bitmap est déjà disponible dans Apache OpenOffice, il vous suffit de spécifier son nom dans la propriété FillBitMapName et son style d'affichage (simple, quadrilé ou étiré) dans la propriété FillBitmapMode. Les valeurs par défaut correspondent à com.sun.star.drawing.BitmapMode.

Pour utiliser un fichier bitmap externe, vous pouvez spécifier son URL dans la propriété FillBitmapURL.

L'exemple suivant crée un rectangle et dispose le bitmap Sky disponible dans Apache OpenOffice en quadrillage, afin de remplir le rectangle :

Dim Doc As Object
Dim Page As Object
Dim RectangleShape As Object
Dim Point As New com.sun.star.awt.Point
Dim Size As New com.sun.star.awt.Size
 
Point.x = 1000
Point.y = 1000
Size.Width = 10000
Size.Height = 10000
 
Doc = StarDesktop.CurrentComponent
Page = Doc.drawPages(0)
 
RectangleShape = Doc.createInstance("com.sun.star.drawing.RectangleShape")
RectangleShape.Size = Size
RectangleShape.Position = Point
 
RectangleShape.FillStyle = com.sun.star.drawing.FillStyle.BITMAP
RectangleShape.FillBitmapName = "Sky"
RectangleShape.FillBitmapMode = com.sun.star.drawing.BitmapMode.REPEAT
 
Page.add(RectangleShape)

Transparence

Vous avez la possibilité d'adapter la transparence des différents remplissages que vous appliquez. La manière la plus simple de modifier la transparence d'un élément de dessin consiste à utiliser la propriété FillTransparence.

L'exemple suivant crée un rectangle rouge avec une transparence de 50 %.

Dim Doc As Object
Dim Page As Object
Dim RectangleShape As Object
Dim Point As New com.sun.star.awt.Point
Dim Size As New com.sun.star.awt.Size
 
Point.x = 1000
Point.y = 1000
Size.Width = 10000
Size.Height = 10000
 
Doc = StarDesktop.CurrentComponent
Page = Doc.drawPages(0)
 
RectangleShape = Doc.createInstance("com.sun.star.drawing.RectangleShape")
RectangleShape.Size = Size
RectangleShape.Position = Point
 
RectangleShape.FillStyle = com.sun.star.drawing.FillStyle.SOLID
RectangleShape.FillTransparence = 50
RectangleShape.FillColor = RGB(255,0,0)
 
Page.add(RectangleShape)

Pour rendre le remplissage transparent, définissez la propriété FillTransparence sur 100.

Outre la propriété FillTransparence, le service com.sun.star.drawing.FillProperties fournit également la propriété FillTransparenceGradient. Elle sert à définir un dégradé pour la transparence d'une zone à remplir.

Propriétés de ligne

Tous les objets de dessin susceptibles de présenter une ligne de bordure prennent en charge le service com.sun.star.drawing.LineStyle. Ce service fournit notamment les propriétés suivantes :

LineStyle (Enum)
type de ligne, avec des valeurs par défaut correspondant à com.sun.star.drawing.LineStyle).
LineColor (Long)
couleur de ligne.
LineTransparence (Short)
transparence de ligne.
LineWidth (Long)
épaisseur de ligne en centièmes de millimètre.
LineJoint (Enum)
transitions vers les points de connexion, avec des valeurs par défaut correspondant à com.sun.star.drawing.LineJoint.

L'exemple suivant crée un rectangle avec une bordure pleine (LineStyle = SOLID) de 5 millimètres d'épaisseur (LineWidth) et une transparence de 50 %. Les arêtes droite et gauche de la ligne se prolongent jusqu'à ce qu'elles se rejoignent (LineJoint = MITER) pour former un angle droit.

Dim Doc As Object
Dim Page As Object
Dim RectangleShape As Object
Dim Point As New com.sun.star.awt.Point
Dim Size As New com.sun.star.awt.Size
 
Point.x = 1000
Point.y = 1000
Size.Width = 10000
Size.Height = 10000
 
Doc = StarDesktop.CurrentComponent
Page = Doc.drawPages(0)
 
RectangleShape = Doc.createInstance("com.sun.star.drawing.RectangleShape")
RectangleShape.Size = Size
RectangleShape.Position = Point
 
RectangleShape.LineColor = RGB(128,128,128)
RectangleShape.LineTransparence = 50
RectangleShape.LineWidth = 500
RectangleShape.LineJoint = com.sun.star.drawing.LineJoint.MITER   
 
RectangleShape.LineStyle = com.sun.star.drawing.LineStyle.SOLID
 
Page.add(RectangleShape)

Outre les propriétés indiquées précédemment, le service com.sun.star.drawing.LineStyle fournit des options permettant de dessiner des lignes pointillées. Pour plus d'informations, reportez-vous à la référence de l'API Apache OpenOffice.

Propriétés de texte (objets de dessin)

Les services com.sun.star.style.CharacterProperties et com.sun.star.style.ParagraphProperties permettent de formater du texte dans des objets de dessin. Ces services portent sur les caractères individuels et sur les paragraphes. Ils sont traités en détail au chapitre Documents texte.

L'exemple suivant permet d'insérer du texte dans un rectangle et d'en formater la police à l'aide du service com.sun.star.style.CharacterProperties.

Dim Doc As Object
Dim Page As Object
Dim RectangleShape As Object
Dim Point As New com.sun.star.awt.Point
Dim Size As New com.sun.star.awt.Size
Point.x = 1000
Point.y = 1000
Size.Width = 10000
Size.Height = 10000
Doc = StarDesktop.CurrentComponent
Page = Doc.drawPages(0)
 
RectangleShape = Doc.createInstance("com.sun.star.drawing.RectangleShape")
RectangleShape.Size = Size
RectangleShape.Position = Point
 
Page.add(RectangleShape)
 
RectangleShape.String = "This is a test"
RectangleShape.CharWeight = com.sun.star.awt.FontWeight.BOLD
RectangleShape.CharFontName = "Arial"

Ce code fait appel à la propriété String du rectangle pour insérer le texte, ainsi qu'aux propriétés CharWeight et CharFontName du service com.sun.star.style.CharacterProperties pour formater la police du texte.

Le texte ne peut être inséré qu'une fois l'objet de dessin ajouté à la page de dessin. Vous pouvez également positionner et formater du texte dans un objet de dessin à l'aide du service com.sun.star.drawing.Text. Ce service fournit notamment les propriétés suivantes :

TextAutoGrowHeight (Boolean)
adapte la hauteur de l'élément de dessin au texte qu'il contient.
TextAutoGrowWidth (Boolean)
adapte la largeur de l'élément de dessin au texte qu'il contient.
TextHorizontalAdjust (Enum)
position horizontale du texte à l'intérieur de l'élément de dessin, avec des valeurs par défaut correspondant à com.sun.star.drawing.TextHorizontalAdjust.
TextVerticalAdjust (Enum)
position verticale du texte à l'intérieur de l'élément de dessin, avec des valeurs par défaut correspondant à com.sun.star.drawing.TextVerticalAdjust.
TextLeftDistance (Long)
écart séparant le bord gauche de l'élément de dessin et le texte, exprimé en centièmes de millimètre.
TextRightDistance (Long)
écart séparant le bord droit de l'élément de dessin et le texte, exprimé en centièmes de millimètre.
TextUpperDistance (Long)
écart séparant le bord supérieur de l'élément de dessin et le texte, exprimé en centièmes de millimètre.
TextLowerDistance (Long)
écart séparant le bord inférieur de l'élément de dessin et le texte, exprimé en centièmes de millimètre.

L'exemple suivant illustre l'utilisation des propriétés nommées.

Dim Doc As Object
Dim Page As Object
Dim RectangleShape As Object
Dim Point As New com.sun.star.awt.Point
Dim Size As New com.sun.star.awt.Size
 
Point.x = 1000
Point.y = 1000
Size.Width = 10000
Size.Height = 10000
 
Doc = StarDesktop.CurrentComponent
Page = Doc.drawPages(0)
 
RectangleShape = Doc.createInstance("com.sun.star.drawing.RectangleShape")
RectangleShape.Size = Size
RectangleShape.Position = Point
 
Page.add(RectangleShape)
 
RectangleShape.String = "This is a test"   ' May only take place after Page.add!
 
RectangleShape.TextVerticalAdjust = com.sun.star.drawing.TextVerticalAdjust.TOP
RectangleShape.TextHorizontalAdjust = com.sun.star.drawing.TextHorizontalAdjust.LEFT
 
RectangleShape.TextLeftDistance = 300
RectangleShape.TextRightDistance = 300
RectangleShape.TextUpperDistance = 300
RectangleShape.TextLowerDistance = 300

Ce code insère un élément de dessin dans une page, puis ajoute du texte dans l'angle supérieur gauche de celui-ci à l'aide des propriétés TextVerticalAdjust et TextHorizontalAdjust. L'écart minimum entre le texte et le bord de l'objet de dessin est de trois millimètres.

Propriétés d'ombre

Vous pouvez ajouter une ombre à la plupart des objets de dessin en utilisant le service com.sun.star.drawing.ShadowProperties. Ce service fournit les propriétés suivantes :

Shadow (Boolean)
active l'ombre.
ShadowColor (Long)
couleur d'ombre.
ShadowTransparence (Short)
transparence de l'ombre.
ShadowXDistance (Long)
écart vertical séparant l'ombre et l'objet de dessin, exprimé en centièmes de millimètre.
ShadowYDistance (Long)
écart horizontal séparant l'ombre et l'objet de dessin, exprimé en centièmes de millimètre.

L'exemple suivant crée un rectangle avec une ombre décalée de 2 millimètres verticalement et horizontalement. L'ombre prend une couleur gris foncé avec une transparence de 50 %.

Dim Doc As Object
Dim Page As Object
Dim RectangleShape As Object
Dim Point As New com.sun.star.awt.Point
Dim Size As New com.sun.star.awt.Size
 
Point.x = 1000
Point.y = 1000
Size.Width = 10000
Size.Height = 10000
 
Doc = StarDesktop.CurrentComponent
Page = Doc.drawPages(0)
 
RectangleShape = Doc.createInstance("com.sun.star.drawing.RectangleShape")
RectangleShape.Size = Size
RectangleShape.Position = Point
 
RectangleShape.Shadow = True
RectangleShape.ShadowColor = RGB(192,192,192)
RectangleShape.ShadowTransparence = 50
RectangleShape.ShadowXDistance = 200 
RectangleShape.ShadowYDistance = 200
 
Page.add(RectangleShape)

Présentation de différents objets de dessin

Formes rectangulaires

Les objets de forme rectangulaire (com.sun.star.drawing.RectangleShape) prennent en charge les services suivants pour leur formatage :

Fill properties
com.sun.star.drawing.FillProperties.
Line properties
com.sun.star.drawing.LineProperties.
Text properties
com.sun.star.drawing.Text (avec com.sun.star.style.CharacterProperties et com.sun.star.style.ParagraphProperties).
Shadow properties
com.sun.star.drawing.ShadowProperties.
CornerRadius (Long)
rayon d'arrondissement des angles en centièmes de millimètre.

Cercles et ellipses

Le service com.sun.star.drawing.EllipseShape gère les cercles et les ellipses. Il prend en charge les services suivants :

Fill properties
com.sun.star.drawing.FillProperties.
Line properties
com.sun.star.drawing.LineProperties.
Text properties
com.sun.star.drawing.Text (avec com.sun.star.style.CharacterProperties et com.sun.star.style.ParagraphProperties).
Shadow properties
com.sun.star.drawing.ShadowProperties.

Outre ces services, les cercles et les ellipses fournissent les propriétés suivantes :

CircleKind (Enum)
type de cercle ou d'ellipse, avec des valeurs par défaut correspondant à com.sun.star.drawing.CircleKind.
CircleStartAngle (Long)
angle de départ exprimé en dixièmes de degré (pour les segments de cercle ou d'ellipse uniquement).
CircleEndAngle (Long)
angle final exprimé en dixièmes de degré (pour les segments de cercle ou d'ellipse uniquement).

La propriété CircleKind détermine si un objet est un cercle complet, une tranche de cercle ou une section de cercle. Les valeurs disponibles sont les suivantes :

com.sun.star.drawing.CircleKind.FULL
cercle entier ou ellipse entière.
com.sun.star.drawing.CircleKind.CUT
section de cercle (cercle partiel dont les interfaces sont liées directement les unes aux autres).
com.sun.star.drawing.CircleKind.SECTION
tranche de cercle.
com.sun.star.drawing.CircleKind.ARC
angle (sans ligne de cercle).

L'exemple suivant crée une tranche de cercle avec un angle de 70 degrés, résultant de la différence entre l'angle de départ (20 degrés) et l'angle final (90 degrés).

Dim Doc As Object
Dim Page As Object
Dim EllipseShape As Object
Dim Point As New com.sun.star.awt.Point
Dim Size As New com.sun.star.awt.Size
 
Point.x = 1000
Point.y = 1000
Size.Width = 10000
Size.Height = 10000
 
Doc = StarDesktop.CurrentComponent
Page = Doc.drawPages(0)
 
EllipseShape = Doc.createInstance("com.sun.star.drawing.EllipseShape")
EllipseShape.Size = Size
EllipseShape.Position = Point
 
EllipseShape.CircleStartAngle = 2000
EllipseShape.CircleEndAngle = 9000
EllipseShape.CircleKind =  com.sun.star.drawing.CircleKind.SECTION
 
Page.add(EllipseShape)

Lignes

Apache OpenOffice fournit le service com.sun.star.drawing.LineShape pour les objets Line. Les objets Line prennent en charge tous les services de formatage généraux, à l'exception des zones. Les propriétés associées au service LineShape sont les suivantes :

Line properties
com.sun.star.drawing.LineProperties.
Text properties
com.sun.star.drawing.Text (avec com.sun.star.style.CharacterProperties et com.sun.star.style.ParagraphProperties).
Shadow properties
com.sun.star.drawing.ShadowProperties.

L'exemple suivant crée et formate une ligne à l'aide des propriétés nommées. L'origine de la ligne est spécifiée dans la propriété Location, tandis que les coordonnées répertoriées dans la propriété Size déterminent le point limite de la ligne.

Dim Doc As Object
Dim Page As Object
Dim LineShape As Object
Dim Point As New com.sun.star.awt.Point
Dim Size As New com.sun.star.awt.Size
 
Point.x = 1000
Point.y = 1000
Size.Width = 10000
Size.Height = 10000
 
Doc = StarDesktop.CurrentComponent
Page = Doc.drawPages(0)
 
LineShape = Doc.createInstance("com.sun.star.drawing.LineShape")
LineShape.Size = Size
LineShape.Position = Point
 
Page.add(LineShape)

Formes polypolygonales

Apache OpenOffice prend également en charge les formes polygonales complexes via le service com.sun.star.drawing.PolyPolygonShape. Un polygone n'est pas à proprement parler un simple polygone : il s'agit d'un polygone multiple. Il est donc possible de spécifier plusieurs listes indépendantes contenant des points d'inflexion et de les combiner pour former un objet complet.

Comme pour les formes rectangulaires, toutes les propriétés de formatage des objets de dessin sont également disponibles pour les polypolygones :

Fill properties
com.sun.star.drawing.FillProperties.
Line properties
com.sun.star.drawing.LineProperties.
Text properties
com.sun.star.drawing.Text (avec com.sun.star.style.CharacterProperties et com.sun.star.style.ParagraphProperties).
Shadow properties
com.sun.star.drawing.ShadowProperties.

Le service PolyPolygonShape fournit également une propriété permettant de définir les coordonnées d'un polygone :

  • PolyPolygon (Array) : champ contenant les coordonnées du polygone (matrice double possédant des points de type com.sun.star.awt.Point).

L'exemple suivant illustre la définition d'un triangle avec le service PolyPolygonShape.

Dim Doc As Object
Dim Page As Object
Dim PolyPolygonShape As Object
Dim PolyPolygon As Variant
Dim Coordinates(2) As New com.sun.star.awt.Point
 
Doc = StarDesktop.CurrentComponent
Page = Doc.drawPages(0)
 
PolyPolygonShape = Doc.createInstance("com.sun.star.drawing.PolyPolygonShape")
Page.add(PolyPolygonShape)   ' Page.add must take place before the coordinates are set
 
Coordinates(0).x = 1000
Coordinates(1).x = 7500
Coordinates(2).x = 10000
Coordinates(0).y = 1000
Coordinates(1).y = 7500
Coordinates(2).y = 5000
 
PolyPolygonShape.PolyPolygon = Array(Coordinates())

Les points d'un polygone étant définis comme des valeurs absolues, il n'est pas nécessaire d'en spécifier la taille ou la position de départ. Il est conseillé de créer une matrice de points, de l'intégrer à une seconde matrice (à l'aide de l'appel Array(Coordinates()), puis d'assigner cette matrice au polygone. Pour que l'appel correspondant puisse s'effectuer, le polygone doit être inséré dans le document.

La matrice double de la définition permet de créer des formes complexes en fusionnant plusieurs polygones. Vous pouvez créer par exemple un rectangle et y insérer un autre rectangle afin de créer un trou dans le rectangle d'origine :

Dim Doc As Object
Dim Page As Object
Dim PolyPolygonShape As Object
Dim PolyPolygon As Variant
Dim Square1(3) As New com.sun.star.awt.Point
Dim Square2(3) As New com.sun.star.awt.Point
Dim Square3(3) As New com.sun.star.awt.Point
 
Doc = StarDesktop.CurrentComponent
Page = Doc.drawPages(0)
 
PolyPolygonShape = Doc.createInstance("com.sun.star.drawing.PolyPolygonShape")
 
Page.add(PolyPolygonShape)   ' Page.add must take place before the coordinates are set
 
Square1(0).x = 5000
Square1(1).x = 10000
Square1(2).x = 10000
Square1(3).x = 5000
Square1(0).y = 5000
Square1(1).y = 5000
Square1(2).y = 10000
Square1(3).y = 10000
 
Square2(0).x = 6500
Square2(1).x = 8500
Square2(2).x = 8500
Square2(3).x = 6500
Square2(0).y = 6500
Square2(1).y = 6500
Square2(2).y = 8500
Square2(3).y = 8500
 
Square3(0).x = 6500
Square3(1).x = 8500
Square3(2).x = 8500
Square3(3).x = 6500
Square3(0).y = 9000
Square3(1).y = 9000
Square3(2).y = 9500
Square3(3).y = 9500
 
PolyPolygonShape.PolyPolygon = Array(Square1(), Square2(), Square3())

Pour distinguer les zones remplies des zones correspondant à des trous, Apache OpenOffice applique une règle simple : l'arête de la forme extérieure correspond toujours à la bordure extérieure du polypolygone. La ligne suivante vers l'intérieur correspond à la bordure intérieure de la forme et marque la transition vers le premier trou. S'il existe une autre ligne vers l'intérieur, elle marque la transition vers une zone remplie.

Images

Les derniers éléments de dessin présentés ici sont des objets graphiques basés sur le service com.sun.star.drawing.GraphicObjectShape. Vous pouvez les utiliser avec les images de Apache OpenOffice, dont il est possible d'adapter l'apparence grâce à une vaste gamme de propriétés.

Les objets graphiques prennent en charge deux des propriétés de formatage générales :

Text properties
com.sun.star.drawing.Text (avec com.sun.star.style.CharacterProperties et com.sun.star.style.ParagraphProperties).
Shadow properties
com.sun.star.drawing.ShadowProperties.

Les autres propriétés prises en charge par les objets graphiques sont les suivantes :

GraphicURL (String)
URL de l'image.
AdjustLuminance (Short)
luminance des couleurs, exprimée en pourcentage (les valeurs négatives sont autorisées).
AdjustContrast (Short)
contraste exprimé en pourcentage (les valeurs négatives sont autorisées).
AdjustRed (Short)
valeur de la couleur rouge exprimée en pourcentage (les valeurs négatives sont autorisées).
AdjustGreen (Short)
valeur de la couleur verte exprimée en pourcentage (les valeurs négatives sont autorisées).
AdjustBlue (Short)
valeur de la couleur bleue exprimée en pourcentage (les valeurs négatives sont autorisées).
Gamma (Short)
valeur gamma d'une image.
Transparency (Short)
transparence d'une image exprimée en pourcentage.
GraphicColorMode (enum)
mode de couleur (standard, niveaux de gris, noir et blanc, par exemple) avec des valeurs par défaut correspondant à com.sun.star.drawing.ColorMode.

L'exemple suivant illustre l'insertion d'une page dans un objet graphique :Dim Doc As Object

Dim Page As Object
Dim GraphicObjectShape As Object
Dim Point As New com.sun.star.awt.Point
Dim Size As New com.sun.star.awt.Size
 
Point.x = 1000         ' specifications, insignificant because latter
                       coordinates are binding
Point.y = 1000
Size.Width = 10000
Size.Height = 10000
 
Doc = StarDesktop.CurrentComponent
Page = Doc.drawPages(0)
 
GraphicObjectShape = Doc.createInstance("com.sun.star.drawing.GraphicObjectShape")
 
GraphicObjectShape.Size = Size
GraphicObjectShape.Position = Point
 
GraphicObjectShape.GraphicURL = "file:///c:/test.jpg"
GraphicObjectShape.AdjustBlue = -50
GraphicObjectShape.AdjustGreen = 5
GraphicObjectShape.AdjustBlue = 10
GraphicObjectShape.AdjustContrast = 20
GraphicObjectShape.AdjustLuminance = 50
GraphicObjectShape.Transparency = 40
GraphicObjectShape.GraphicColorMode = com.sun.star.drawing.ColorMode.STANDARD
 
Page.add(GraphicObjectShape)

Ce code insère l'image test.jpg et adapte son apparence à l'aide des propriétés Adjust. Dans cet exemple, les images sont représentées avec une transparence de 40 % et aucune autre conversion de couleur (GraphicColorMode = STANDARD).

Content on this page is licensed under the Public Documentation License (PDL).
Personal tools