aboutsummaryrefslogtreecommitdiff
path: root/latex_pgfornament/texmf/tex/latex/pgfornament/pgfornament.sty
diff options
context:
space:
mode:
Diffstat (limited to 'latex_pgfornament/texmf/tex/latex/pgfornament/pgfornament.sty')
-rw-r--r--latex_pgfornament/texmf/tex/latex/pgfornament/pgfornament.sty154
1 files changed, 154 insertions, 0 deletions
diff --git a/latex_pgfornament/texmf/tex/latex/pgfornament/pgfornament.sty b/latex_pgfornament/texmf/tex/latex/pgfornament/pgfornament.sty
new file mode 100644
index 0000000..541b6f9
--- /dev/null
+++ b/latex_pgfornament/texmf/tex/latex/pgfornament/pgfornament.sty
@@ -0,0 +1,154 @@
+%% pgfornament.sty 0.1 du 01/03/2012 inspired from psvectorian P Fradin H Voss
+%% ------------------------------------------------
+%% Copyright (C) 2012 Alain Matthes
+%% ------------------------------------------------
+% Les options de \pgfornament sont:
+%
+% scale : nombre (échelle, 1 par défaut)
+% width : nombre + unité (largeur, naturelle par défaut)
+% height : nombre + unité (hauteur, naturelle par défaut)
+% color : couleur ( par défaut couleur courante )
+% symmetry=h : true/false (symétrie horizontale, false par défaut)
+% symmetry=v : true/false (symétrie verticale, false par défaut)
+% symmetry=c : true/false (symétrie centrale h+v,false par défaut)
+\NeedsTeXFormat{LaTeX2e}%
+\RequirePackage{tikz,pgfopts}%
+\ProvidesPackage{pgfornament}[2014/05/31 v0.11 vector ornaments]%
+\gdef\pgfOrnamentsObject{pgflibraryvectorian.code.tex}
+\gdef\OrnamentsFamily{vectorian}
+\pgfkeys{
+/pgfOrnaments/object/.cd,
+/pgfOrnaments/object/.code = \gdef\pgfOrnamentsObject{pgflibrary#1.code.tex}
+\gdef\OrnamentsFamily{#1}
+}
+\ProcessPgfOptions{/pgfOrnaments}
+\input{\pgfOrnamentsObject}%
+\makeatletter
+
+% appels des motifs
+\def\pgf@@ornament#1{%
+\begingroup
+\def\i{\pgfusepath{clip}}%
+\def\k{\pgfusepath{stroke}}%
+\let\o\pgfpathclose
+\let\s\pgfusepathqfillstroke
+\def\p ##1##2{\pgfqpoint{##1bp}{##2bp}}%
+\def\m ##1 ##2 {\pgfpathmoveto{\p{##1}{##2}}}%
+\def\l ##1 ##2 {\pgfpathlineto{\p{##1}{##2}}}%
+\def\r ##1 ##2 ##3 ##4 {\pgfpathrectangle{\p{##1}{##2}}{\p{##3}{##4}}}%
+\def\c ##1 ##2 ##3 ##4 ##5 ##6 {%
+\pgfpathcurveto{\p{##1}{##2}}{\p{##3}{##4}}{\p{##5}{##6}}}%
+\@@input \OrnamentsFamily#1.pgf%
+\endgroup}%
+
+\tikzset{pgfornamentstyle/.style={}}%
+\pgfkeys{%
+/ornament/.cd,
+scale/.code = {\def\pgfornamentscale{#1}},
+width/.code = {\def\pgfornamentwidth{#1}},
+height/.code = {\def\pgfornamentheight{#1}},
+color/.code = {\def\pgfornamentcolor{#1}},
+anchor/.code = {\def\pgfornamentanchor{#1}},
+ydelta/.code = {\def\pgfornamentydelta{#1}},
+symmetry/.is choice,
+symmetry/v/.code = {\tikzset{pgfornamentstyle/.append style={cm={-1,0,0,1,(0,0)}}}},
+symmetry/c/.code = {\tikzset{pgfornamentstyle/.append style={cm={-1,0,0,-1,(0,0)}}}},
+symmetry/h/.code = {\tikzset{pgfornamentstyle/.append style={cm={1,0,0,-1,(0,0)}}}},
+symmetry/none/.code = {\tikzset{pgfornamentstyle/.append style={cm={1,0,0,1,(0,0)}}}}}%
+\def\pgfornament{\pgfutil@ifnextchar[{\pgf@ornament}{\pgf@ornament[]}}%
+\def\pgf@ornament[#1]#2{%
+\pgfkeys{/ornament/.cd,
+ scale = 1,
+ width = {},
+ height = {},
+ color = {},
+ ydelta = 0 pt,
+ symmetry = none ,
+ anchor = center}%
+%
+\pgfqkeys{/ornament}{#1}%
+\ifx\pgfornamentcolor\empty
+ \tikzset{pgfornamentstyle/.append style={}}%
+\else
+ \tikzset{pgfornamentstyle/.append style={color=\pgfornamentcolor}}%
+\fi
+\ifx\pgfornamentwidth\empty
+ \else
+ \@pgfornamentDim{#2}%
+ \pgfmathsetmacro{\pgfornamentscale}{\pgfornamentwidth/\@pgfornamentX bp}%
+\fi
+\ifx\pgfornamentheight\empty
+ \else
+ \@pgfornamentDim{#2}%
+ \pgfmathsetmacro{\pgfornamentscale}{\pgfornamentheight/\@pgfornamentY bp}%
+\fi
+\begin{tikzpicture}[%
+ baseline={([yshift=\pgfornamentydelta]current bounding box.\pgfornamentanchor)},pgfornamentstyle]
+ \pgftransformscale{\pgfornamentscale}%
+ \pgf@@ornament{#2}%
+\end{tikzpicture}%
+\tikzset{pgfornamentstyle/.style={cm={1,0,0,1,(0,0)}}}%
+}%
+\gdef\ornamenttopos{.5}
+\gdef\ornamenttoanchor{center}
+\gdef\ornamenttosymmetry{none}
+\tikzset{options default/.style={anchor=center,sloped,allow upside down,inner sep=0pt}}
+\tikzset{%
+ornament/at/.code={\def\ornamenttopos{#1}},
+options/.style={options default,#1},
+ornament symmetry/.code={\def\ornamenttosymmetry{#1}},
+node anchor/.code={\def\ornamenttoanchor{#1}},
+ornament/.style={%
+to path={%
+\pgfextra{%
+ \tikz@scan@one@point\pgfutil@firstofone(\tikztostart)\relax
+ \pgf@xa=\pgf@x
+ \pgf@ya=\pgf@y
+ \tikz@scan@one@point\pgfutil@firstofone(\tikztotarget)\relax
+ \pgf@xb=\pgf@x
+ \pgf@yb=\pgf@y
+ \advance\pgf@xa by-\pgf@xb
+ \advance\pgf@ya by-\pgf@yb
+ \pgfmathveclen{\pgf@xa}{\pgf@ya}%
+ \global\let\ornamentlen\pgfmathresult
+ } -- node [pos=\ornamenttopos,options,anchor=\ornamenttoanchor]{%
+ \pgfornament[width = \ornamentlen,symmetry=\ornamenttosymmetry]{#1}}
+ (\tikztotarget)\tikztonodes %end pgfextra
+ }% end to path
+ }% end style
+}%
+\def\pgfornamenthline#1#2#3#4{%
+ \pgfextractx{\pgf@x}{\pgfpointanchor{#1}{#3 east}}
+ \pgf@xa=\pgf@x
+ \pgfextractx{\pgf@x}{\pgfpointanchor{#2}{#3 west}}
+ \pgf@xb=\pgf@x
+ \advance\pgf@xb by -\pgf@xa
+\node[inner sep=0pt] at ($(#1.#3 east)!.5!(#2.#3 west)$) {\pgfornament[width=\pgf@xb]{#4}} ;
+}
+\def\pgfornamentvline#1#2#3#4{%
+ \pgfextracty{\pgf@y}{\pgfpointanchor{#1}{south #3}}
+ \pgf@ya=\pgf@y
+ \pgfextracty{\pgf@y}{\pgfpointanchor{#2}{north #3}}
+ \pgf@yb=\pgf@y
+ \advance\pgf@yb by -\pgf@ya
+\node[inner sep=0pt,rotate=90] at ($(#1.south #3)!.5!(#2.north #3)$) {\pgfornament[width=\pgf@yb]{#4}} ;
+}%
+\def\getornamentlength#1#2#3#4{%
+ \pgfpointdiff{\pgfpointanchor{#1}{#2}}%
+ {\pgfpointanchor{#3}{#4}}%
+ \pgf@xa=\pgf@x
+ \pgf@ya=\pgf@y
+ \pgfmathveclen{\pgf@xa}{\pgf@ya}%
+ \global\let\ornamentlen\pgfmathresult
+}%
+\def\getornamentangle#1#2#3{%
+ \pgfpointdiff{\pgfpointanchor{#2}{center}}{\pgfpointanchor{#3}{center}}%
+ \pgfmathsetmacro{#1}{atan2(\pgf@x,\pgf@y)}%
+}%
+\makeatother
+
+\newcommand{\resetpgfornamentstyle}{\tikzset{pgfornamentstyle/.style={}}}
+
+
+\endinput
+% End