Doplnky pre programovanie v LibreOffice Calc
Spôsob rozširovania Calcu pomocou doplnkov, ktorý je popísaný nasledujúcimi časťami, je zastaraný. Rozhrania sú stále platné a podporované, aby bola zaistená kompatibilita s existujúcimi doplnkami, ale pre programovanie nových doplnkov by ste mali použiť funkciu API.
LibreOffice Calc je možné rozšíriť pomocou doplnkov, čo sú externé programové moduly poskytujúce doplňujúce funkcie pre prácu so zošitmi Tieto funkcie sa zobrazia Sprievodca funkcií v kategórií Doplnky Ak si chcete naprogramovať doplnok sám, prečítate si tu, ktorá funkcia musí zdieľaná knižnica externá DLL exportovať, aby bolo možné doplnok úspešne doplniť.
LibreOffice hľadá v adresári modulu vhodnú zdieľanú knižnicuDLL aby LibreOffice túto zdieľanú knižnicu DLL rozoznal, musí mať určité vlastnosti popísané ďalej. Tieto informácie vám umožnia naprogramovať si vlastný doplnok pre Sprievodcu funkcií v LibreOffice Calc.
Princíp doplnkov
Každá knižnica doplnkov poskytuje niekoľko funkcií. Niektoré funkcie sa používajú na účely administrácie. Na svoje funkcie môžete použiť takmer akýkoľvek názov. Musíte však dodržať určité pravidlá na predávanie parametrov. presná konvencia pomenovaní a volaní sa líši pre rôzne platformy.
funkciezdieľaná knižnica DLL knižnice
Musí existovať minimálne administratívna funkcia GetFunctionCount a GetFunctionDataPomocou týchto funkcií je možné určiť ďalšie funkcie, typy parametrov a návratové hodnoty. Pre návratové hodnoty sú podporované typy Double a String. Ako parametre sú naviac podporované oblasti buniekDouble Array, String Array, and Cell Array are supported.
Parametre sa predávajú odkazom. Preto je v podstate možné zmeniť ich hodnoty. Ale LibreOffice Calc túto vlastnosť nepodporuje, pretože v zošitoch nemá zmysel.
Knižnice je možné kedykoľvek za behu znova načítať a analyzovať ich obsah pomocou administratívnych funkcií.Pre každú funkciu sú k dispozícií informácie o počte a typoch parametrov, interný a externý názov funkcie a administratívne číslo funkcie.
Funkcie sú volané súčasne (synchrónne) a výsledok vracajú okamžite. Sú možné aj funkcie reálneho času (asynchrónne funkcie), tie tu nič menej vďaka svojej zložitosti nie sú podrobnejšie vysvetlené.
Všeobecné informácie o rozhraní.
Maximálny počet parametrov v integrovanej funkcii LibreOffice Calc AddIn je 16: jedna návratová hodnota a maximálne 15 vstupných parametrov.
Dátové typy sú definované takto:
Dátové typy |
Definícia |
CALLTYPE |
Systém Windows: FAR PASCAL (_far _pascal) Iné: výstupná (podľa operačného systému) |
USHORT |
2bajtové celé kladné číslo |
DOUBLE |
8bajtový formát podľa platformy |
Paramtype |
Int podľa platformy PTR_DOUBLE =0 ukazovateľ na typ double PTR_STRING =1 ukazovateľ na reťazec zakončený 0 PTR_DOUBLE_ARR =2 ukazovateľ na pole typu double PTR_STRING_ARR =3 ukazovateľ na pole reťazcov PTR_CELL_ARR =4 ukazovateľ na pole buniek NONE =5 |
Zdieľaná knižnica DLL funkcie
nižšie nájdete popis funkcií, ktoré sú volané v zdieľanej knižniciv externej DLL.
pre všetky funkciezdieľané knižnice DLL platí toto:
void CALLTYPE funkcie(výstup, vstup1, vstup2, ...)
Výstup: Výsledná hodnota
Vstup: ľubovoľný počet typov(double&, char*, double*, char**, Cell area), kde Cell area je pole typov double array, string array alebo cell array.
GetFunctionCount()
Vracia počet bez administratívnej funkcie referenčného parametra. Každá funkcia má jedinečné číslo od 0 do nCount-1. Toto číslo je potrebné na funkciu GetFunctionData a GetParameterDescription posledné funkcie.
Syntax
void CALLTYPE GetFunctionCount(USHORT& nCount)
Parameter
USHORT &nCount:
Výstup: odkaz na premennú, ktorá obsahuje počet funkcií doplnkov. Príklad: ak doplnok poskytuje 5 funkcií na LibreOffice Calc, tak nCount=5.
GetFunctionData()
Zisti všetky dôležité informácie o funkcií doplnkov
Syntax
void CALLTYPE GetFunctionData(USHORT& nNo, char* pFuncName, USHORT& nParamCount, Paramtype* peType, char* pInternalName)
Parameter
USHORT& nNo:
Vstup:Číslo funkcie od 0 do nCount-1, vrátane.
char* pFuncName:
Výstup: Názov funkcie, ako ju vidí programátor, zodpovedá názvu v zdieľanej knižnici DLL. Tento názov neurčuje názov zobrazený v Sprievodca funkcií.
USHORT& nParamCount:
Výstup: počet parametrov funkcie doplnkov. Počet musí byť vždy väčší než 0, pretože každá funkcia má výslednú hodnotu. Maximálny počet je 16.
Paramtype* peType:
Výstup: Ukazovateľ na pole pozostávajúce presne zo 16 premenných typu Paramtype. Prvé položky parametrov nParamCount obsahujú vhodný typ parametrov.
char* pInternalName:
Výstup: Názov funkcie, ako ju vidí používateľ. Tento názov sa zobrazuje v Sprievodca funkcií. Môže obsahovať diakritické znamienka.
Parametre pFuncName a pInternalName sú polia znakov, ktoré sú v LibreOffice Calc implementované vo veľkosti 256.
GetParameterDescription()
Poskytuje krátky popis funkcie doplnkov a ich parametrov. Voliteľne je možné použiť túto funkciu na zobrazenie popisu funkcie a parametrov v Sprievodcovi funkcií.
Syntax
void CALLTYPE GetParameterDescription(USHORT& nNo, USHORT& nParam, char* pName, char* pDesc)
Parameter
USHORT& nNo:
Vstup: číslo funkcie v knižnici. Číslo od 0 do nCount-1.
USHORT& nParam:
Vstup: Označuje parameter, pre ktorý bude popis načítaný. Počítanie parametrov začína od čísla 1. Ak má parameter nParam hodnotu 0, predpokladá sa, že je popis daný parametrom pDecs, a v tom prípade nemá parameter pName žiadny význam.
char* pName:
Výstup: Obsahuje Názov alebo typ parametrov , napr. slovo "Číslo", "Reťazec" či "Dátum" a pod. V LibreOffice Calc implementované ako char[256].
char* pDesc:
Výstup: Obsahuje popis parametrov, napr. "Hodnota, pre ktorú chcete vyčísliť vesmír." V LibreOffice Calc implementované ako char[256].
pName a pDesc sú polia znakov; v LibreOffice Calc implemntované vo veľkosti 256. Poznámka: miesto dostupné v Sprievodca funkcií je obmedzené, nie je možné naplno využiť všetkých 256 znakov.
Oblasti buniek
Nasledujúce tabuľky obsahujú informácie o tom, aké dátové štruktúry musí externý programový modul poskytovať, aby bolo možné predávať oblasti buniek. LibreOffice Calc rozlišuje medzi tromi rôznymi poľami (v závislosti na dátovom type).
Pole typu Double
Ako parameter je možné predať oblasť buniek s hodnotami typu Number/Double. Pole typu double je v LibreOffice Calc definované takto:
Odchýlka |
Názov |
Popis |
0 |
Stĺp1 |
Číslo stĺpca v ľavom hornom rohu oblasti buniek. Číslovanie začína číslom 0. |
2 |
Riadok1 |
Číslo riadku v ľavom hornom rohu oblasti buniek. Číslovanie začína číslom 0. |
4 |
Tab1 |
Číslo tabuľky v ľavom hornom rohu oblasti buniek. Číslovanie začína číslom 0. |
6 |
Stĺp2 |
Číslo stĺpca v pravom dolnom rohu oblasti buniek. Číslovanie začína číslom 0. |
8 |
Riadok2 |
Číslo riadku v pravom dolnom rohu oblasti buniek. Číslovanie začína číslom 0. |
10 |
Tab2 |
Číslo tabuľky v pravom dolnom rohu oblasti buniek. Číslovanie začína číslom 0. |
12 |
Počet |
Počet prvkov, ktoré nasledujú. Prázdne bunky nie sú započítané ani predávané. |
14 |
Stĺp. |
Číslo stĺpca daného prvku. Číslovanie začína číslom 0. |
16 |
Riadok |
Číslo riadku daného prvku. Číslovanie začína číslom 0. |
18 |
Tabulátor |
Číslo tabuľky daného prvku. Číslovanie začína číslom 0. |
20 |
Chyba |
Číslo chyby. Hodnota 0 má význam "bez chyby". Ak pochádza prvok z bunky obsahujúci vzorec, je hodnota chyby daná vzorcom. |
22 |
Hodnota |
8bajtová premenná typu IEEE typu double s plávajúcou desatinnou čiarkou |
30 |
... |
Ďalší prvok |
Pole reťazcov
Oblasť buniek, ktorá obsahuje hodnoty typu Text a predáva sa ako pole reťazcov. Pole typu string je v LibreOffice Calc definované takto:
Odchýlka |
Názov |
Popis |
0 |
Stĺp1 |
Číslo stĺpca v ľavom hornom rohu oblasti buniek. Číslovanie začína číslom 0. |
2 |
Riadok1 |
Číslo riadku v ľavom hornom rohu oblasti buniek. Číslovanie začína číslom 0. |
4 |
Tab1 |
Číslo tabuľky v ľavom hornom rohu oblasti buniek. Číslovanie začína číslom 0. |
6 |
Stĺp2 |
Číslo stĺpca v pravom dolnom rohu oblasti buniek. Číslovanie začína číslom 0. |
8 |
Riadok2 |
Číslo riadku v pravom dolnom rohu oblasti buniek. Číslovanie začína číslom 0. |
10 |
Tab2 |
Číslo tabuľky v pravom dolnom rohu oblasti buniek. Číslovanie začína číslom 0. |
12 |
Počet |
Počet prvkov, ktoré nasledujú. Prázdne bunky nie sú započítané ani predávané. |
14 |
Stĺp. |
Číslo stĺpca daného prvku. Číslovanie začína číslom 0. |
16 |
Riadok |
Číslo riadku daného prvku. Číslovanie začína číslom 0. |
18 |
Tabulátor |
Číslo tabuľky daného prvku. Číslovanie začína číslom 0. |
20 |
Chyba |
Číslo chyby. Hodnota 0 má význam "bez chyby". Ak pochádza prvok z bunky obsahujúci vzorec, je hodnota chyby daná vzorcom. |
22 |
Len |
Dĺžka nasledujúceho reťazca vrátane záverečného nulového bajtu. Ak má dĺžka vrátane záverečného nulového bajtu nepárnu hodnotu, je do reťazca pridaný druhý nulový bajt, aby mala dĺžka párnu hodnotu. Parameter Len sa potom vypočíta podľa vzorca ((StrLen+2)&~1). |
24 |
Reťazec |
Reťazec, ktorý je zakončený nulovým bajtom. |
24+Len |
... |
Ďalší prvok |
Pole buniek
Pole buniek sa používa ako odkaz na bunky, ktoré obsahujú text a čísla. Pole buniek je v LibreOffice Calc definované takto:
Odchýlka |
Názov |
Popis |
0 |
Stĺp1 |
Číslo stĺpca v ľavom hornom rohu oblasti buniek. Číslovanie začína číslom 0. |
2 |
Riadok1 |
Číslo riadku v ľavom hornom rohu oblasti buniek. Číslovanie začína číslom 0. |
4 |
Tab1 |
Číslo tabuľky v ľavom hornom rohu oblasti buniek. Číslovanie začína číslom 0. |
6 |
Stĺp2 |
Číslo stĺpca v pravom dolnom rohu oblasti buniek. Číslovanie začína číslom 0. |
8 |
Riadok2 |
Číslo riadku v pravom dolnom rohu oblasti buniek. Číslovanie začína číslom 0. |
10 |
Tab2 |
Číslo tabuľky v pravom dolnom rohu oblasti buniek. Číslovanie začína číslom 0. |
12 |
Počet |
Počet prvkov, ktoré nasledujú. Prázdne bunky nie sú započítané ani predávané. |
14 |
Stĺp. |
Číslo stĺpca daného prvku. Číslovanie začína číslom 0. |
16 |
Riadok |
Číslo riadku daného prvku. Číslovanie začína číslom 0. |
18 |
Tabulátor |
Číslo tabuľky daného prvku. Číslovanie začína číslom 0. |
20 |
Chyba |
Číslo chyby. Hodnota 0 má význam "bez chyby". Ak pochádza prvok z bunky obsahujúci vzorec, je hodnota chyby daná vzorcom. |
22 |
Typ |
Typ obsahu bunky, 0 == Double, 1 == Reťazec |
24 |
Value alebo Len |
Ak je Type == 0: 8bajtová premenná IEEE typu double s plávajúcou desatinnou čiarkou Ak je Type == 1: Dĺžka nasledujúceho reťazca vrátane záverečného nulového bajtu. AK má dĺžka vrátane záverečného nulového bajtu nepárnu hodnotu, je do reťazca pridaný druhý nulový bajt, aby mala dĺžka párnu hodnotu. Parameter Len sa potom vypočíta podľa vzorca ((StrLen+2)&~1). |
26 ak type==1 |
Reťazec |
Ak Type == 1:Reťazec, ktorý je zakončený nulovým bajtom. |
32 alebo 26+Len |
... |
Ďalší prvok |