Regen'd Swedish documentation

h/t Daniel N.
This commit is contained in:
Bill Kendrick 2025-09-28 10:07:25 +01:00
parent fb0460894c
commit 509dfff633
12 changed files with 488 additions and 473 deletions

View file

@ -6,7 +6,7 @@ Copyright (c) 2002-2025
Various contributors (see below, and AUTHORS.txt)
https://tuxpaint.org/
2025.September.9 (0.9.36)
2025.September.28 (0.9.36)
* Documentation updates:
----------------------
+ Describe where Tux Paint searches for system fonts,
@ -54,6 +54,12 @@ https://tuxpaint.org/
+ Portuguese (Portugal) translation
Hugo Carvalho <hugokarvalho@hotmail.com>
* Swedish translation
Daniel Nylander <po@danielnylander.se>
* Swedish documentation translation
Daniel Nylander <po@danielnylander.se>
* Ports & Building:
-----------------
+ Expose SDL2_gfx to Magic Tool plugins

View file

@ -40,7 +40,8 @@ genom de bibliotek som den använder.
hittas exporterar Rita med Tux helt enkelt ritningar och GIF-filer till
"$HOME".
Tux Paint also uses this to find FontConfig configuration files; see below.
Rita med Tux använder också detta för att hitta
FontConfig-konfigurationsfiler; se nedan.
@ -107,8 +108,8 @@ för användare av Rita med Tux.
### Font-related environment variables ###
Tux Paint uses FontConfig (via Pango, in turn via SDL_Pango) to find fonts that
may be used by the "Text" and "Label" tools.
Rita med Tux använder FontConfig (via Pango, i sin tur via SDL_Pango) för att
hitta teckensnitt som kan användas av verktygen "Text" och "Etikett".
→ FONTCONFIG_PATH ←

View file

@ -596,30 +596,30 @@ och/eller kursiv stil och ändra storleken.
### System Fonts ###
Tux Paint checks a number of standard Operating System locations for fonts that
the 'Text' and 'Label' tools might be able to use (unless the "--nosysfonts"
option is set). The locations vary, depending on operating system.
Rita med Tux kontrollerar ett antal standardplatser i operativsystemet för
teckensnitt som verktygen "Text" och "Label" kan använda (om inte alternativet
"--nosysfonts" är inställt). Platserna varierar beroende på operativsystem.
* Windows
+ The location specified by the "Fonts" option of the "Software\Microsoft
\Windows\CurrentVersion\Explorer\Shell Folders" Windows Registry key.
+ Den plats som anges av alternativet "Fonts" i "Software\Microsoft\
Windows\CurrentVersion\Explorer\Shell Folders" Windows registernyckel.
+ If the above fails, then "C:\WINDOWS\FONTS".
+ The location specified by the "Local AppData" option of the "Software\
+ Den plats som anges av alternativet "Local AppData" i "Software\
Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" Windows
Registry key. The path "\Microsoft\Windows\Fonts" is appended to that
location.
registernyckel. Sökvägen "\Microsoft\Windows\Fonts" läggs till den
platsen.
* macOS
+ /System/Library/Fonts
+ /Library/Fonts
+ /usr/share/fonts
+ /usr/X11R6/lib/X11/fonts
+ The "Library/Fonts" folder in the user's home folder.
+ Mappen "Library/Fonts" i användarens hemmapp.
* Android
+ /system/fonts
* Haiku
The locations found by asking Haiku's "Storage Kit" to find the directories
on the "/boot" volume for:
De platser som hittades genom att be Haikus "Storage Kit" att hitta
katalogerna på volymen"/boot" för:
+ B_SYSTEM_FONTS_DIRECTORY
+ B_SYSTEM_NONPACKAGED_FONTS_DIRECTORY
+ B_USER_FONTS_DIRECTORY
@ -638,24 +638,24 @@ option is set). The locations vary, depending on operating system.
### FontConfig ###
Tux Paint utilizes FontConfig to find additional system-wide and user-specific
fonts that the 'Text' and 'Label' tools might be able to use (unless the
"--nosysfonts" option is set). It does this by looking for FontConfig
configuration files ("fonts.conf") in various locations.
Rita med Tux använder FontConfig för att hitta ytterligare systemomfattande och
användarspecifika teckensnitt som verktygen 'Text' och 'Etikett' kan använda
(om inte alternativet "--nosysfonts" är inställt). Detta görs genom att leta
efter FontConfig konfigurationsfiler ("fonts.conf") på olika platser.
* Windows
+ The "etc/fonts/fonts.conf" file included with Tux Paint.
+ Filen "etc/fonts/fonts.conf" som medföljer Rita med Tux.
* macOS
+ The path specified by the "FONTCONFIG_PATH" environment variable, if
set.
+ Den sökväg som anges av miljövariabeln "FONTCONFIG_PATH", om den är
inställd.
* Haiku
+ /boot/system/settings/fonts/fonts.conf
* Linux/etc.
+ The path specified by the "FONTCONFIG_PATH" environment variable, if
set.
+ Den sökväg som anges av miljövariabeln "FONTCONFIG_PATH", om den är
inställd.
+ If the above fails, then "/etc/fonts/fonts.conf".
+ The path specified by the "XDG_CONFIG_HOME" environment variable, if
set. There, it looks for the file "fontconfig/fonts.conf".
+ Den sökväg som anges av miljövariabeln "XDG_CONFIG_HOME", om den är
inställd. Där letar den efter filen "fontconfig/fonts.conf".
+ If the above fails, then "$HOME/.config/fontconfig/fonts.conf".
Each FontConfig configuration file ("fonts.conf") is examined for "<dir>" tags
@ -664,19 +664,19 @@ scans them and loads the fonts. If a "prefix" attribute is included in the tag,
Tux Paint prefixes the path accordingly.
→ xdg ←
The directory path specified is considered to be relative to the user's
local data path, specified by the "XDG_DATA_HOME" environment variable. If
not set, then ".local/share" under the path specified by the "HOME"
environment variable will be used, if it exists.
Den angivna katalogsökvägen anses vara relativ i förhållande till
användarens lokala datasökväg, som anges av miljövariabeln "XDG_DATA_HOME".
Om den inte anges kommer ".local/share" under den sökväg som anges av
miljövariabeln "HOME" att användas, om den finns.
→ relative ←
The directory path specified is considered to be relative to the
configuration file itself.
Den angivna katalogsökvägen anses vara relativ i förhållande till själva
konfigurationsfilen.
→ default, cwd, or no "prefix" attribute specified ←
The directory path specified is considered to be relative to the current
working directory (where Tux Paint is running), unless a root path is
included at the start (e.g., "/", "C:\\", etc.)
Den angivna katalogsökvägen anses vara relativ till den aktuella
arbetskatalogen (där Rita med Tux körs), såvida inte en rotsökväg anges i
början (t.ex. "/", "C:\\" etc.)
"Startbilder"
@ -709,9 +709,9 @@ separat bakgrundsbild som en del av en "startbild". Överlägget fungerar på
samma sätt: det kan inte ritas över, raderas eller påverkas av
"Magic"-verktygen. Det kan däremot bakgrunden!
När verktyget "Eraser" används på en bild som bygger på den här typen av bild
"start, återgår den delen av duken till den ursprungliga bakgrundsbilden från
bild "start i stället för att bli enfärgad, t.ex. vit.
När verktyget "Eraser" används på en bild som bygger på den här typen av
"start"-bild, återgår den delen av duken till den ursprungliga bakgrundsbilden
från "start"-bild i stället för att bli enfärgad, t.ex. vit.
Genom att skapa både ett överlägg och en bakgrund kan du skapa en "starter" som
simulerar djup. Tänk dig en bakgrund som visar havet och en overlay som är en
@ -724,21 +724,21 @@ transparens) och spara den med samma filnamn, men med "-back" (förkortning för
"bakgrund") som tillägg till namnet. (t.ex. "start-back.png" skulle vara den
bakgrundsbild som motsvarar överlägget eller förgrunden)
För bästa resultat bör "start" bilder vara minst lika stor som Rita med Tuxs
För bästa resultat bör "start"-bilder vara minst lika stor som Rita med Tuxs
ritduk. (Se avsnittet "Ladda andra bilder i Rita med Tux" i Rita med Tuxs
huvuddokumentation (README) för detaljer om storlek) Om de inte är det kommer
de att sträckas ut eller skalas. Detta görs utan att påverka formen
("bildförhållandet"), men kan dock ge upphov till viss utslätning av kanterna.
Placera dem i katalogen "starters". När dialogrutan "New" öppnas i Rita med Tux
kommer "start" bilder att visas i den skärm som visas, efter de olika
kommer "start"-bilder att visas i den skärm som visas, efter de olika
valmöjligheterna för enfärg.
💡 Obs: "Startbilder" "bifogas" till sparade bilder via en liten textfil som har
samma namn som den sparade filen, men med ".dat" som tillägg. Detta gör att den
kan fortsätta att påverka teckningen även efter att Rita med Tux har avslutats,
eller en annan bild har laddats eller en ny bild har skapats. (Med andra ord,
om du baserar en teckning på en bild "start, kommer den alltid att påverkas av
om du baserar en teckning på en "start"-bild, kommer den alltid att påverkas av
den)
### Startalternativ ###

View file

@ -1,55 +1,55 @@
Tux Paint
version 0.9.36
### Magic Tool Plugin API Documentation ###
### Dokumentation för tillägget Magi-verktygets API ###
Copyright © 2007-2025 av olika bidragsgivare; se AUTHORS.txt.
https://tuxpaint.org/
januari 12, 2025
+-----------------------------------------------------+
| Innehåll |
|-----------------------------------------------------|
| * Förutsättningar |
| * Interfaces |
| + plugin-funktioner för "Magic"-verktyget |
| o Vanliga argument till plugin-funktioner |
| o Nödvändiga plugin-funktioner |
| # Plugin "hushållning" funktioner |
| # Plugin-händelsefunktioner |
| + Tux Paint Functions and Data |
| o Pixelmanipulationer |
| o Hjälpfunktioner |
| o Information |
| o Sound Functions |
| o Tux Paint System Calls |
| o Färgkonverteringar |
| + Hjälpmakron i "tp_magic_api.h" |
| + Constant Definitions in "tp_magic_api.h" |
| * Compiling |
| + Linux and other Unix-like Platforms |
| + Fönster |
| + macOS |
| * Installing |
| + Linux and other Unix-like Platforms |
| + Fönster |
| + macOS |
| * Skapa plugins med flera effekter |
| * Example Code |
| * Få hjälp |
| * Ordlista |
+-----------------------------------------------------+
+------------------------------------------------------+
| Innehåll |
|------------------------------------------------------|
| * Förutsättningar |
| * Gränssnitt |
| + tilläggsfunktioner för "Magi"-verktyget |
| o Vanliga argument till tilläggsfunktioner |
| o Nödvändiga tilläggsfunktioner |
| # Tilläggsfunktioner för "hushållning" |
| # Händelsefunktioner för tillägg |
| + Tux Paint Funktioner och data |
| o Pixelmanipulationer |
| o Hjälpfunktioner |
| o Information |
| o Ljudfunktioner |
| o Systemanrop för Tux Paint |
| o Färgkonverteringar |
| + Hjälpmakron i "tp_magic_api.h" |
| + Konstantdefinitioner i "tp_magic_api.h" |
| * Kompilering |
| + Linux och andra Unix-liknande plattformar |
| + Fönster |
| + macOS |
| * Installering |
| + Linux och andra Unix-liknande plattformar |
| + Fönster |
| + macOS |
| * Skapa tillägg med flera effekter |
| * Exempelkod |
| * Få hjälp |
| * Ordlista |
+------------------------------------------------------+
Översikt
Rita med Tux's "Magic"-verktyg kommer som en uppsättning "plugins" som laddas
när Rita med Tux startar.
Rita med Tux "Magi"-verktyg kommer som en uppsättning "tillägg" som laddas när
Rita med Tux startar.
Denna uppdelning möjliggör en snabbare utveckling av "magiska" verktyg och gör
det möjligt för programmerare att skapa och testa nya verktyg utan att behöva
integrera dem i Rita med Tuxs källkod. (Användare av mer professionella
grafikverktyg, t.ex. GIMP, bör känna till detta plugin-koncept)
grafikverktyg, t.ex. GIMP, bör känna till detta tilläggskoncept)
Förutsättningar
@ -59,22 +59,22 @@ DirectMedia Layer ("libSDL", eller bara "SDL"; finns på https://www.libsdl.org
kompilerar C-baserade program. Det rekommenderas starkt att man känner till SDL
API, men några grundläggande SDL-koncept kommer att behandlas i detta dokument.
Interfaces
Gränssnitt
De som skapar plugins för "magiska" verktyg för Rita med Tux måste
De som skapar tillägg för "magiska" verktyg för Rita med Tux måste
tillhandahålla vissa gränssnitt (C-funktioner) som Rita med Tux kan anropa.
Rita med Tux använder SDL:s rutiner "SDL_LoadObject()" och "SDL_LoadFunction()"
för att ladda plugins (filer med delade objekt, t.ex. ".so"-filer i Linux eller
för att ladda tillägg (filer med delade objekt, t.ex. ".so"-filer i Linux eller
".dll"-filer i Windows) och hitta funktionerna i dem.
Rita med Tux tillhandahåller i sin tur ett antal hjälpfunktioner som
plugin-programmet kan (eller ibland måste) använda. Detta exponeras som en
tilläggsprogrammet kan (eller ibland måste) använda. Detta exponeras som en
C-struktur (eller"struct") som innehåller pekare till funktioner och andra data
i Rita med Tux. En pekare till denna struktur skickas vidare till
plugin-funktionerna som ett argument när Rita med Tux anropar dem.
Plugins bör #inkludera C-huvudfilen"tp_magic_api.h", som exponerar
Tillägg bör #inkludera C-huvudfilen"tp_magic_api.h", som exponerar
plugin-API:et för verktyget "Magic". När du kör C-kompilatorn för att bygga ett
plugin bör du också använda kommandoradsverktyget"tp-magic-config" för att få
lämpliga kompilatorflaggor (till exempel var kompilatorn kan hitta Rita med
@ -85,19 +85,19 @@ C-huvudfilen och kommandoradsverktyget som nämns ovan ingår i Rita med Tux -
eller i vissa fall som en del av ett "Rita med Tux 'Magic' Tool Plugin
Development package".
### plugin-funktioner för "Magic"-verktyget ###
### tilläggsfunktioner för "Magi"-verktyget ###
plugins för "Magic"-verktyg måste innehålla de funktioner som anges nedan.
Tillägg för "Magi"-verktyg måste innehålla de funktioner som anges nedan.
Observera: För att undvika kollisioner i namnrymden måste varje funktionsnamn
börja med det delade objektets filnamn (t.ex. skulle "blur.so" eller "blur.dll"
ha funktioner vars namn börjar med"blur_"). Detta inkluderar privata funktioner
(sådana som inte används direkt av Rita med Tux), såvida du inte deklarerar dem
som"statiska".
## Vanliga argument till plugin-funktioner ##
## Vanliga argument till tilläggsfunktioner ##
Här följer en beskrivning av de argument som många av funktionerna i ditt
plugin måste acceptera.
tillägg måste acceptera.
→ magic_api * api ←
@ -106,7 +106,7 @@ plugin måste acceptera.
använda. Innehållet i denna struktur beskrivs nedan..
Observera: Strukturen magic_api definieras i C-headerfilen"tp_magic_api.h",
som du bör inkludera högst upp i ditt plugins C-källfil:
som du bör inkludera högst upp i ditt tilläggs C-källfil:
#include "tp_magic_api.h"
@ -153,16 +153,16 @@ plugin måste acceptera.
pekare kommer du åt dess element via"->"(pil) snarare än "." (punkt).
## Nödvändiga plugin-funktioner ##
## Nödvändiga tilläggsfunktioner ##
Ditt insticksprogram måste minst innehålla alla följande funktioner.
Observera: Kom ihåg att plugin-programmets funktionsnamn måste föregås av
Observera: Kom ihåg att tilläggsprogrammets funktionsnamn måste föregås av
plugin-programmets filnamn. Det vill säga, om ditt plugin heter"zoom.so" (på
Linux) eller "zoom.dll" (på Windows), måste namnen på dina funktioner börja med
"zoom_" (t.ex. "zoom_get_name(...)").
# Plugin "hushållning" funktioner #
# Tilläggsfunktioner för "hushållning" #
→ Uint32 api_version(void) ←
@ -178,12 +178,13 @@ Linux) eller "zoom.dll" (på Windows), måste namnen på dina funktioner börja
→ int init(magic_api * api, Uint8 disabled_features, Uint8 complexity_level) ←
Plugin-programmet bör göra alla initialiseringar här. Returnera '1' om
Tilläggsprogrammet bör göra alla initialiseringar här. Returnera '1' om
initieringen lyckades, eller '0' om den inte gjorde det (och Rita med Tux
kommer inte att presentera några 'Magic'-verktyg från insticksprogrammet).
Obs: Anropas en gång av Rita med Tux, vid uppstart. Det anropas
efter"api_version()", om Rita med Tux anser att ditt plugin är kompatibelt.
efter"api_version()", om Rita med Tux anser att ditt tillägg är
kompatibelt.
Värdet disabled_features innehåller bits som ställts in för alla Rita med
Tux-funktioner som är relevanta för Magic-verktyg som har inaktiverats i
@ -196,7 +197,7 @@ Linux) eller "zoom.dll" (på Windows), måste namnen på dina funktioner börja
eller flera funktioner har inaktiverats. (Till exempel har det magiska
verktyget "Brick" alltid erbjudit två verktygsvarianter: stort och litet.
Med tillägget av storleksfunktionen behövs bara ett verktyg. Men när
storleksalternativet är inaktiverat kan plugin-programmet återgå till att
storleksalternativet är inaktiverat kan tilläggsprogrammet återgå till att
tillhandahålla två separata verktyg)
Variabeln complexity_level innehåller den "komplexitetsnivå" som Rita med
@ -204,7 +205,7 @@ Linux) eller "zoom.dll" (på Windows), måste namnen på dina funktioner börja
Nivåerna definieras i tp_magic_api.h::
o MAGIC_COMPLEXITY_NOVICE (0): Novis (--complexity=novice)
o MAGIC_COMPLEXITY_BEGINNER (1): Nybörjare (--complexity=beginner)
o MAGIC_COMPLEXITY_ADVANCED (2): Advanced (default) (--complexity=
o MAGIC_COMPLEXITY_ADVANCED (2): Avancerad (standard) (--complexity=
advanced)
Ditt/dina Magic-verktyg kanske vill reagera olika beroende på användarens
kunskapsnivå, antingen genom att förenkla hur varje verktyg fungerar eller
@ -222,7 +223,7 @@ Linux) eller "zoom.dll" (på Windows), måste namnen på dina funktioner börja
→ int get_tool_count(magic_api * api) ←
Detta ska returnera antalet magiska verktyg som detta plugin
Detta ska returnera antalet magiska verktyg som detta tillägg
tillhandahåller till Rita med Tux.
Obs: Anropas en gång av Rita med Tux, vid start. Den anropas efter din"init
@ -243,7 +244,7 @@ Linux) eller "zoom.dll" (på Windows), måste namnen på dina funktioner börja
Du måste returnera ett värde som är en kombination av ett eller flera av de
tillgängliga lägena:
o MODE_PAINT - måla på fri hand (klicka och dra)
o MODE_FULLSCREEN - applies to full image with one click
o MODE_FULLSCREEN - gäller för hela bilden med ett klick
o MODE_PAINT_WITH_PREVIEW - frihandsmålning, med förhandsgranskning
(klicka och dra)
o MODE_ONECLICK - gäller för ett område runt musen, med ett klick
@ -251,7 +252,7 @@ Linux) eller "zoom.dll" (på Windows), måste namnen på dina funktioner börja
returnera"MODE_PAINT". Om användaren kan göra båda, returnera"MODE_PAINT |
MODE_FULLSCREEN" för att tala om för Rita med Tux att den kan göra båda.
Observera: Anropas en gång för varje Magic-verktyg som ditt plugin påstår
Observera: Anropas en gång för varje Magic-verktyg som ditt tillägg påstår
sig innehålla (genom ditt"get_tool_count()").
Obs: Tillagd till Rita med Tux 0.9.21; Magic API-version 0x00000002.
@ -266,7 +267,7 @@ Linux) eller "zoom.dll" (på Windows), måste namnen på dina funktioner börja
Rita med Tux kommer att free() strängen vid avslutning, så du bör linda in
den i ett C strdup() -anrop.
Observera: Anropas en gång för varje Magic-verktyg som ditt plugin påstår
Observera: Anropas en gång för varje Magic-verktyg som ditt tillägg påstår
sig innehålla (genom ditt"get_tool_count()").
@ -291,7 +292,7 @@ Linux) eller "zoom.dll" (på Windows), måste namnen på dina funktioner börja
o MAGIC_TYPE_ARTISTIC — Specialverktyg för konstnärliga ändamål, t.ex.
Flower, String-verktygen och Rainbow-arc-ritverktygen.
Observera: Anropas en gång för varje Magic-verktyg som ditt plugin påstår
Observera: Anropas en gång för varje Magic-verktyg som ditt tillägg påstår
sig innehålla (genom ditt"get_tool_count()").
Obs: Tillagd till Rita med Tux 0.9.27; Magic API-version 0x00000005.
@ -307,7 +308,7 @@ Linux) eller "zoom.dll" (på Windows), måste namnen på dina funktioner börja
Rita med Tux kommer att frigöra ("SDL_FreeSurface()") ytan när den
avslutas.
Observera: Anropas en gång för varje Magic-verktyg som ditt plugin påstår
Observera: Anropas en gång för varje Magic-verktyg som ditt tillägg påstår
sig innehålla (genom ditt"get_tool_count()").
@ -321,14 +322,15 @@ Linux) eller "zoom.dll" (på Windows), måste namnen på dina funktioner börja
Rita med Tux kommer att free() strängen vid avslutning, så du bör linda in
den i ett C strdup() -anrop.
Obs: För varje Magic-verktyg som ditt plugin påstår sig innehålla
Obs: För varje Magic-verktyg som ditt tillägg påstår sig innehålla
(rapporterat av din "get_tool_count()"-funktion), kommer denna funktion att
anropas för varje läge som verktyget påstår sig stödja (rapporterat av din
"modes()"-funktion).
Med andra ord, om ditt plugin innehåller två verktyg, ett som bara fungerar
i färgläge och det andra som fungerar i både färgläge och fullbildsläge,
kommer ditt plugins"get_description()" att anropas tre gånger.
Med andra ord, om ditt tillägg innehåller två verktyg, ett som bara
fungerar i färgläge och det andra som fungerar i både färgläge och
helbildsläge, kommer ditt tilläggs "get_description()" att anropas tre
gånger.
@ -337,7 +339,7 @@ Linux) eller "zoom.dll" (på Windows), måste namnen på dina funktioner börja
Returnerar en "1" om "Magic"-verktyget accepterar färger (paletten "Colors"
i Rita med Tux kommer att vara tillgänglig), eller "0" om inte.
Observera: Anropas en gång för varje Magic-verktyg som ditt plugin påstår
Observera: Anropas en gång för varje Magic-verktyg som ditt tillägg påstår
sig innehålla (genom ditt"get_tool_count()").
@ -349,7 +351,7 @@ Linux) eller "zoom.dll" (på Windows), måste namnen på dina funktioner börja
om 'Magic'-verktyget inte ska erbjuda storleksalternativ. Att returnera '1'
är samma sak som att returnera '0'.
Obs: För varje Magic-verktyg som ditt plugin påstår sig innehålla
Obs: För varje Magic-verktyg som ditt tillägg påstår sig innehålla
(rapporterat av din "get_tool_count()"-funktion), kommer denna funktion att
anropas för varje läge som verktyget påstår sig stödja (rapporterat av din
"modes()"-funktion).
@ -367,7 +369,7 @@ Linux) eller "zoom.dll" (på Windows), måste namnen på dina funktioner börja
storlek som Rita med Tux begär. Returnera ett tal mellan '1' och det belopp
som du returnerade i accepted_sizes().
Obs: För varje Magic-verktyg som ditt plugin påstår sig innehålla
Obs: För varje Magic-verktyg som ditt tillägg påstår sig innehålla
(rapporterat av din "get_tool_count()"-funktion), kommer denna funktion att
anropas för varje läge som verktyget påstår sig stödja (rapporterat av din
"modes()"-funktion).
@ -378,24 +380,24 @@ Linux) eller "zoom.dll" (på Windows), måste namnen på dina funktioner börja
→ void shutdown(magic_api * api) ←
Plugin-programmet bör göra all upprensning här. Om du har allokerat något
Tilläggsprogrammet bör göra all upprensning här. Om du har allokerat något
minne eller använt SDL_Mixer för att ladda några ljud under init(), till
exempel, bör du frigöra( ) det allokerade minnet och Mix_FreeChunk() ljuden
här.
Note: This function is called once, when Tux Paint exits.
Observera: Denna funktion anropas en gång när Rita med Tux avslutas.
# Plugin-händelsefunktioner #
# Händelsefunktioner för tillägg #
→ void switchin(magic_api * api, int which, int mode, SDL_Surface * snapshot,
SDL_Surface * canvas)
void switchout(magic_api * api, int which, int mode, SDL_Surface * snapshot,
SDL_Surface * canvas) ←
switchin() anropas när ett av plugin-programmets magiska verktyg blir
switchin() anropas när ett av tilläggsprogrammets magiska verktyg blir
aktivt, och switchout() anropas när ett blir inaktivt. Detta kan bero på
att användaren just har klickat på ett specifikt magiskt verktyg (det
aktuella verktyget kopplas ut och ett nytt kopplas in).
@ -434,7 +436,7 @@ SDL_Surface * canvas) ←
Rita med Tux anropar denna funktion för att informera insticksprogrammet om
RGB-värdena för den aktuella valda färgen i Rita med Tuxs palett "Colors".
(Funktionen anropas när ett av plugin-programmets magiska verktyg som
(Funktionen anropas när ett av tilläggsprogrammets magiska verktyg som
accepterar färger blir aktivt, och när användaren väljer en ny färg medan
ett sådant verktyg är aktivt)
@ -454,8 +456,9 @@ SDL_Surface * last, Uint8 size, SDL_Rect * update_rect) ←
Rita med Tux anropar denna funktion för att informera insticksprogrammet om
det valda storleksalternativet för "Magic"-verktyget. (Den anropas när ett
av plugin-programmets magiska verktyg som accepterar storlekar blir aktivt,
och när användaren väljer en ny storlek medan ett sådant verktyg är aktivt)
av tilläggsprogrammets magiska verktyg som accepterar storlekar blir
aktivt, och när användaren väljer en ny storlek medan ett sådant verktyg är
aktivt)
I allmänhet kommer Magic-verktygen inte att ändra duken på något sätt när
de får en uppdaterad storlek, men det är möjligt.
@ -467,12 +470,12 @@ SDL_Surface * last, Uint8 size, SDL_Rect * update_rect) ←
→ void click(magic_api * api, int which, int mode, SDL_Surface * snapshot,
SDL_Surface * canvas, int x, int y, SDL_Rect * update_rect) ←
Plugin-programmet ska tillämpa lämpligt "Magic"-verktyg på"canvas"-ytan.
Tilläggsprogrammet ska tillämpa lämpligt "Magic"-verktyg på"canvas"-ytan.
(x,y)-koordinaterna är var musen befann sig (inom canvasen) när musknappen
klickades, och du får veta vilket "läge" ditt verktyg är i
(dvs."MODE_PAINT" eller"MODE_FULLSCREEN").
Plugin-programmet bör rapportera tillbaka vilken del av duken som
Tilläggsprogrammet bör rapportera tillbaka vilken del av duken som
påverkades genom att fylla i elementen (x,y) och (w,h) i"update_rect".
Innehållet i teckningsytan omedelbart före musklicket lagras
@ -483,21 +486,21 @@ SDL_Surface * canvas, int x, int y, SDL_Rect * update_rect) ←
→ void drag(magic_api * api, int which, SDL_Surface * snapshot, SDL_Surface *
canvas, int ox, int oy, int x, int y, SDL_Rect * update_rect) ←
Plugin-programmet bör tillämpa lämpligt "Magic"-verktyg på"canvas"-ytan.
Tilläggsprogrammet bör tillämpa lämpligt "Magic"-verktyg på"canvas"-ytan.
Koordinaterna (ox,oy) och (x,y) är musens position i början och slutet av
strecket.
Plugins som låter användaren "rita" effekter på duken använder vanligtvis
Rita med Tux's"line()" 'Magic' tool plugin-hjälpfunktion för att beräkna
Tillägg som låter användaren "rita" effekter på duken använder vanligtvis
Rita med Tux "line()" 'Magic' tool tilläggshjälpfunktion för att beräkna
punkterna på linjen mellan (ox,oy) och (x,y), och anropar en annan funktion
inom pluginet för att tillämpa effekten vid varje punkt. (Se"Rita med
Tux-funktioner och data" nedan).
Plugin-programmet bör rapportera tillbaka vilken del av duken som
Tilläggsprogrammet bör rapportera tillbaka vilken del av duken som
påverkades genom att fylla i elementen (x,y) och (w,h) i"update_rect".
Obs: Innehållet i ritningsytan omedelbart före musklicket förblir detsamma
som det var (när plugin-programmets "click()"-funktion anropades) och är
som det var (när tilläggsprogrammets "click()"-funktion anropades) och är
fortfarande tillgängligt i"snapshot"-ytan.
@ -505,23 +508,23 @@ canvas, int ox, int oy, int x, int y, SDL_Rect * update_rect) ←
→ void release(magic_api * api, int which, SDL_Surface * snapshot, SDL_Surface
* canvas, int x, int y, SDL_Rect * update_rect) ←
Plugin-programmet bör använda lämpligt "Magic"-verktyg på"canvas"-ytan.
Tilläggsprogrammet bör använda lämpligt "Magic"-verktyg på"canvas"-ytan.
(x,y)-koordinaterna är var musen befann sig (inom duken) när musknappen
släpptes.
Plugin-programmet bör rapportera tillbaka vilken del av duken som
Tilläggsprogrammet bör rapportera tillbaka vilken del av duken som
påverkades genom att fylla i elementen (x,y) och (w,h) i "update_rect".
Obs: Innehållet i ritningsytan omedelbart före musklicket förblir detsamma
som det var (när plugin-programmets "click()"-funktion anropades) och är
som det var (när tilläggsprogrammets "click()"-funktion anropades) och är
fortfarande tillgängligt i "snapshot"-ytan.
### Tux Paint Functions and Data ###
### Tux Paint Funktioner och data ###
Rita med Tux tillhandahåller ett antal hjälpfunktioner som plugins kan komma åt
Rita med Tux tillhandahåller ett antal hjälpfunktioner som tillägg kan komma åt
via strukturen"magic_api", som skickas till alla plugins funktioner. (Se
"Obligatoriska plugin-funktioner" ovan.)
@ -574,17 +577,17 @@ via strukturen"magic_api", som skickas till alla plugins funktioner. (Se
Den skickar (x,y)-koordinaterna på linjen till "callback"-funktionen,
Rita med Tuxs"magic_api"-struktur (som en"void *"-pekare som du måste
skicka till den), ett "which"-värde som representerar vilket av
plugin-programmets "Magic"-verktyg som används, och de aktuella och
tilläggsprogrammets "Magi"-verktyg som används, och de aktuella och
snapshot-bilderna.
Exempel på prototyp av en callback-funktion som kan skickas till Rita
med Tux's"line()" 'Magic' tool plugin helper-funktion:
med Tux "line()" 'Magic' tool plugin helper-funktion:
void exampleCallBack(void * ptr_to_api, int which_tool, SDL_Surface
* canvas, SDL_Surface * snapshot, int x, int y);
Exempel på användning av"line()"-hjälpen (t.ex. inom ett plugins draw()
-funktion):
Exempel på användning av"line()"-hjälpen (t.ex. inom ett tilläggs draw
() -funktion):
api->line((void *) api, which, canvas, snapshot, ox, oy, x, y, 1,
exampleCallBack);
@ -636,7 +639,7 @@ via strukturen"magic_api", som skickas till alla plugins funktioner. (Se
På Linux kan detta till exempel vara"/usr/share/tuxpaint/".
Magiska verktyg bör innehålla en ikon (se"get_icon()", ovan) och
uppmuntras att innehålla ljudeffekter, det är användbart för plugins
uppmuntras att innehålla ljudeffekter, det är användbart för tillägg
att veta var sådana saker finns.
Vid kompilering och installation av ett insticksprogram bör
@ -644,7 +647,7 @@ via strukturen"magic_api", som skickas till alla plugins funktioner. (Se
sådana data ska placeras för att den installerade versionen av Rita med
Tux ska hitta dem. (Se"Installera" nedan.)
Obs: Om ditt plugin är installerat lokalt (t.ex. i din katalog"~
Obs: Om ditt tillägg är installerat lokalt (t.ex. i din katalog"~
/.tuxpaint/plugins/"), snarare än globalt (systemövergripande), kommer
värdet"data_directory" att vara annorlunda. (t.ex. "/home/användarnamn/
.tuxpaint/plugins/data/").
@ -652,7 +655,7 @@ via strukturen"magic_api", som skickas till alla plugins funktioner. (Se
## Sound Functions ##
## Ljudfunktioner ##
→ void playsound(Mix_Chunk * snd, int pan, int dist) ←
@ -713,7 +716,7 @@ via strukturen"magic_api", som skickas till alla plugins funktioner. (Se
## Tux Paint System Calls ##
## Systemanrop för Tux Paint ##
→ void update_progress_bar(void) ←
Ber Rita med Tux att animera och rita en bildruta i förloppsindikatorn
@ -827,7 +830,7 @@ via strukturen"magic_api", som skickas till alla plugins funktioner. (Se
### Constant Definitions in "tp_magic_api.h" ###
### Konstantdefinitioner i "tp_magic_api.h" ###
Följande är en sammanfattning av de konstantvärden som ställs in (via"#
define") i huvudfilen för verktygs-API:et 'Magic'.
@ -839,11 +842,11 @@ via strukturen"magic_api", som skickas till alla plugins funktioner. (Se
Det bör refereras till av ditt magiska verktygs"api_version()
"-funktion, för att informera den löpande kopian av Rita med Tux om
ditt plugin är kompatibelt eller inte.
ditt tillägg är kompatibelt eller inte.
Obs: Detta versionsnummer motsvarar inte Rita med Tux's eget
versionsnummer (t.ex. "0.9.36"). API:et kommer inte att ändras varje
gång en ny version av Rita med Tux släpps, vilket innebär att plugins
gång en ny version av Rita med Tux släpps, vilket innebär att tillägg
som kompilerats för tidigare versioner av Rita med Tux ofta kommer att
köras under nyare versioner.
@ -855,13 +858,13 @@ via strukturen"magic_api", som skickas till alla plugins funktioner. (Se
beskrivs ovan.
Compiling
Kompilering
### Linux and other Unix-like Platforms ###
### Linux och andra Unix-liknande plattformar ###
Använd C-kompilatorns kommandoradsalternativ"-shared" för att generera en
fil med delade objekt (".so") baserat på C-källkoden för ditt
verktygsplugin 'Magic'.
verktygstillägget 'Magi'.
Använd kommandot"tp-magic-config --cflags", som levereras som en del av
Rita med Tux - eller i vissa fall som en del av ett "Rita med Tux 'Magic'
@ -869,7 +872,7 @@ via strukturen"magic_api", som skickas till alla plugins funktioner. (Se
kommandoradsflaggor till din C-kompilator som hjälper den att bygga ditt
plugin.
## Command-Line Example ##
## Exempel på kommandoraden ##
Som ett fristående kommando, till exempel med GNU C-kompilatorn och
BASH-skalet:
@ -916,7 +919,7 @@ via strukturen"magic_api", som skickas till alla plugins funktioner. (Se
Observera: Kommandon som listas under ett Makefile-mål ska anges med ett
enda tabbtecken.
## Advanced Makefile ##
## Avancerad Makefile ##
En ännu mer generaliserad Makefile kan se ut så här:
@ -948,9 +951,9 @@ via strukturen"magic_api", som skickas till alla plugins funktioner. (Se
TBD
Installing
Installering
### Linux and other Unix-like Platforms ###
### Linux och andra Unix-liknande plattformar ###
Använd kommandoradsverktyget"tp-magic-config", som levereras som en del av
Rita med Tux - eller i vissa fall som en del av ett "Rita med Tux 'Magic'
@ -975,7 +978,7 @@ via strukturen"magic_api", som skickas till alla plugins funktioner. (Se
Obs: Se anmärkningen ovan angående tecknet "`"(grav)..
## Documentation ##
## Dokumentation ##
Använd kommandot"tp-magic-config --plugindocprefix" för att bestämma var
dokumentationen för dina "Magic"-verktyg ska placeras. Det värde som
@ -1068,8 +1071,8 @@ via strukturen"magic_api", som skickas till alla plugins funktioner. (Se
Under det finns ett"install"-mål i Makefile. (Påkallas av till exempel"$
sudo make install" eller"# make install")
Målet"install" använder"mkdir -p" för att se till att plugin-katalogen
finns, använder sedan"cp" för att kopiera alla plugin (".so")-filer till
Målet"install" använder"mkdir -p" för att se till att tilläggskatalogen
finns, använder sedan "cp" för att kopiera alla plugin (".so")-filer till
den och anropar"chmod" för att se till att de är läsbara.
Därefter utförs en liknande serie kommandon för att installera ikonfiler
@ -1078,7 +1081,7 @@ via strukturen"magic_api", som skickas till alla plugins funktioner. (Se
".txt"-filer) i Rita med Tuxs dokumentationskatalog.
Obs: Makefile-exemplet ovan förutsätter att användaren har behörighet att
installera Rita med Tux-plugins i hela systemet.
installera Rita med Tux-tillägg i hela systemet.
### Fönster ###
@ -1088,13 +1091,13 @@ via strukturen"magic_api", som skickas till alla plugins funktioner. (Se
TBD
Skapa plugins med flera effekter
Skapa tillägg med flera effekter
Plugins för Rita med Tux kan innehålla mer än en effekt. Om du har flera
Tillägg för Rita med Tux kan innehålla mer än en effekt. Om du har flera
effekter som liknar varandra kan det vara vettigt att placera dem i en
plugin-fil för att minska overhead och dela kod.
tilläggsfil för att minska overhead och dela kod.
Följande förslag kan hjälpa dig att skapa plugins som innehåller flera
Följande förslag kan hjälpa dig att skapa tillägg som innehåller flera
effekter:
o Använd C"enum" för att räkna upp effekterna och räkna dem.
@ -1110,9 +1113,9 @@ via strukturen"magic_api", som skickas till alla plugins funktioner. (Se
o Skapa arrayer av längden"NUM_TOOLS" för att innehålla effektspecifika
data.
char * my_plugin_snd_filnamn[NUM_TOOLS] = {
char * my_plugin_snd_filenames[NUM_TOOLS] = {
"one.ogg", "another.ogg", "yet_another.ogg" };
Mix_Chunk * min_plugin_snds[NUM_TOOLS]");
Mix_Chunk * my_plugin_snds[NUM_TOOLS]");
o Använd en C"for"-loop för att ladda eller skapa effektspecifika data
(t.ex. ladda ljudeffekter under din"init()").
@ -1122,13 +1125,13 @@ via strukturen"magic_api", som skickas till alla plugins funktioner. (Se
for (i = 0; i < NUM_TOOLS; i++)
{
/* Becomes, for example, "/usr/share/tuxpaint/sounds/magic/
one.ogg" */
/* Blir till exempel "/usr/share/tuxpaint/sounds/magic/one.ogg"
*/
snprintf(fname, sizeof(fname), "%s/sounds/magic/%s",
api->data_prefix, my_plugin_snd_filnamn[i]);
api->data_prefix, my_plugin_snd_filenames[i]);
min_plugin_snds[i] = Mix_LoadWAV(fname);
my_plugin_snds[i] = Mix_LoadWAV(fname);
}
o På samma sätt kan du göra för att frigöra dem senare (t.ex. frigöra
@ -1137,18 +1140,18 @@ via strukturen"magic_api", som skickas till alla plugins funktioner. (Se
int i;
for (i = 0; i < NUM_TOOLS; i++)
Mix_FreeChunk(min_plugin_snds[i]);
Mix_FreeChunk(my_plugin_snds[i]);
o Använd"which"-värden som skickas till dina funktioner som ett index i
dessa matriser (t.ex. för att spela upp lämplig ljudeffekt för ett
verktyg).
Observera: Även om ditt plugin för närvarande bara innehåller en effekt,
Observera: Även om ditt tillägg för närvarande bara innehåller en effekt,
kan det vara bra att följa stegen ovan så att du kan lägga till en ny
variant av en effekt med liten ansträngning. ("NUM_TOOLS" kommer helt
enkelt att vara '1', dina arrayer kommer att ha längden '1', etc.)
Example Code
Exempelkod
The C source file "tp_magic_example.c" contains a complete example of a
plugin with multiple simple effects.
@ -1169,7 +1172,7 @@ via strukturen"magic_api", som skickas till alla plugins funktioner. (Se
Se "ampersand"
→ * ←
Se "star"
Se "stjärna"
→ -> ←
Se "pil"
@ -1178,7 +1181,7 @@ via strukturen"magic_api", som skickas till alla plugins funktioner. (Se
Se "punkt"
→ ` ←
Se "grave"
Se "grav"
→ alfa ←
Se "RGBA"
@ -1195,7 +1198,7 @@ via strukturen"magic_api", som skickas till alla plugins funktioner. (Se
för en variabel, dvs. en pekare. (Tänk till exempel på"int i;". Senare
hänvisar"&i" till minnet där "i" är lagrat, inte värdet på "i" i sig;
det är en "pekare till"i"")
Se även: "star"
Se även: "stjärna"
→ API ←
Gränssnitt för applikationsprogrammering. Definitionen har ännu inte
@ -1205,7 +1208,7 @@ via strukturen"magic_api", som skickas till alla plugins funktioner. (Se
Ett värde som skickas till en funktion.
→ backquote / backtick ←
Se "grave"
Se "grav"
→ BASH ←
"Bourne Again Shell", ett skal- och kommandospråk för Unix.
@ -1258,13 +1261,6 @@ via strukturen"magic_api", som skickas till alla plugins funktioner. (Se
vanligtvis börjar på 0 och ökar med ett). (t.ex."enum { ONE, TWO, THREE
};"
→ colorspace ←
Definitionen har ännu inte presenterats.
See also:
@ RGBA
@ HSV
→ #define ←
En C-sats som definierar en substitution som kan förekomma senare i
koden. Används vanligen för konstanta värden (t.ex. "#define RADIUS
@ -1286,7 +1282,7 @@ via strukturen"magic_api", som skickas till alla plugins funktioner. (Se
Att flytta en mus medan knappen hålls intryckt, eller att flytta ett
finger eller en penna över en skärm eller surfplatta utan att ta bort
den.
See also:
Se även:
@ klick
@ utgåva
@ -1294,7 +1290,7 @@ via strukturen"magic_api", som skickas till alla plugins funktioner. (Se
→ element ←
En variabel som lagras inom en C-struktur. (Exempel: elementen"w"
och"h" i SDL_Surface lagrar ytans bredd respektive höjd)
See also:
Se även:
@ C-struktur
@ punkt
@ pil
@ -1304,9 +1300,9 @@ via strukturen"magic_api", som skickas till alla plugins funktioner. (Se
Se "C-uppräkning"
→ float ←
Se "floating point"
Se "flyttal"
→ floating point
→ flyttal
Definitionen har ännu inte presenterats.
Se även: "heltal"
@ -1321,9 +1317,16 @@ via strukturen"magic_api", som skickas till alla plugins funktioner. (Se
C-funktioner (t.ex. "strdup()").
Se manuskriptet "malloc(3)" man page.
→ function ←
→ funktion ←
Se "C-funktion"
→ färgrymd ←
Definitionen har ännu inte presenterats.
Se även:
@ RGBA
@ HSV
→ gcc ←
Se "GNU C-kompilator"
@ -1337,7 +1340,7 @@ via strukturen"magic_api", som skickas till alla plugins funktioner. (Se
länkning av program skrivna i programspråket C.
Se manuskriptet "gcc(1)" man page.
→ grave
→ grav ←
Den "`"; används av BASH-skalet för att använda utdata från ett
kommando som kommandoradsargument för ett annat.
@ -1349,13 +1352,13 @@ via strukturen"magic_api", som skickas till alla plugins funktioner. (Se
→ heltal ←
Definitionen har ännu inte presenterats.
Se även: "floating point"
Se även: "flyttal"
→ HSV ←
Färgton, mättnad och värde.Definitionen har ännu inte presenterats.
See also:
Se även:
@ RGBA
@ colorspace
@ färgrymd
→ huvudfil ←
@ -1381,7 +1384,7 @@ via strukturen"magic_api", som skickas till alla plugins funktioner. (Se
→ klick ←
Att trycka på en knapp på en mus, trycka på en pekskärm eller trycka en
penna mot en surfplatta.
See also:
Se även:
@ dra
@ utgåva
@ -1403,14 +1406,14 @@ via strukturen"magic_api", som skickas till alla plugins funktioner. (Se
→ linjär ←
Definitionen har ännu inte presenterats.
→ Magic tool ←
→ magic_api ←
En C-struktur som skickas vidare till ett tilläggs funktioner som
exponerar data och funktioner i den löpande kopian av Rita med Tux.
→ Magiverktyg ←
En av ett antal effekter eller ritverktyg i Rita med Tux, som görs
tillgängliga via verktygsknappen "Magic".
→ magic_api ←
En C-struktur som skickas vidare till ett plugins funktioner som
exponerar data och funktioner i den löpande kopian av Rita med Tux.
→ make ←
Ett verktyg som automatiskt avgör vilka delar av ett större program som
behöver kompileras om och ger kommandon för att kompilera om dem.
@ -1441,7 +1444,10 @@ via strukturen"magic_api", som skickas till alla plugins funktioner. (Se
En SDL_mixer-funktion som laddar en ljudfil (WAV, Ogg Vorbis, etc.) och
returnerar den som en"Mix_Chunk *".
→ namespace ←
→ mättnad ←
Se "HSV"
→ namnrymd ←
Definitionen har ännu inte presenterats.
→ nyans ←
@ -1465,12 +1471,18 @@ via strukturen"magic_api", som skickas till alla plugins funktioner. (Se
grafik i SDL bör osignerade värden användas för RGB-värden, eftersom
varje kanal (röd, grön och blå) kan vara mellan 0 (släckt) och 255
(ljusast).
See also:
Se även:
@ Uint8
@ Uint32
@ integer
→ peka ←
Se "klick"
→ pekare ←
Se "C-pekare"
→ pil ←
"->". En symbol i C som refererar till ett element inom en pekare till
en struktur.
@ -1478,9 +1490,6 @@ via strukturen"magic_api", som skickas till alla plugins funktioner. (Se
→ .png ←
Se "Portable Network Graphics"
→ pointer ←
Se "C-pekare"
→ Portable Network Graphics ←
Portable Network Graphics. Ett utbyggbart filformat för förlustfri,
portabel och välkomprimerad lagring av rasterbilder. Det är det
@ -1500,7 +1509,7 @@ via strukturen"magic_api", som skickas till alla plugins funktioner. (Se
→ punkt ←
".". En symbol i C som refererar till ett element inom en struktur.
See also:
Se även:
@ C-struktur
@ pil
@ -1510,17 +1519,14 @@ via strukturen"magic_api", som skickas till alla plugins funktioner. (Se
→ RGBA ←
Röd, grön, blå och alfa.Definitionen har ännu inte presenterats.
See also:
Se även:
@ HSV
@ colorspace
@ färgrymd
→ röd ←
Se "RGBA"
→ saturation ←
Se "HSV"
→ SDL ←
Se "Simple DirectMedia Layer"
@ -1536,7 +1542,7 @@ via strukturen"magic_api", som skickas till alla plugins funktioner. (Se
blått) i de tre Uint8-variablerna. (Exempel:"SDL_GetRGB(getpixel(surf,
x, y), surf->format, &r, &g, &b);"
Se manuskriptet "SDL_GetRGB(3)" man page.
See also:
Se även:
@ SDL_MapRGB()
@ RGBA
@ -1552,7 +1558,7 @@ via strukturen"magic_api", som skickas till alla plugins funktioner. (Se
Tux's Magic tool API-hjälpfunktion"putpixel()"). (Exempel:"putpixel
(surf, x, y, SDL_MapRGB(surf->format, r, g, b));".)
Se manuskriptet "SDL_MapRGB(3)" man page.
See also:
Se även:
@ SDL_GetRGB()
@ RGBA
@ -1600,7 +1606,7 @@ via strukturen"magic_api", som skickas till alla plugins funktioner. (Se
→ sRGB ←
Se "RGBA"
→ star
→ stjärna ←
"*". En symbol i C som, när den används i deklarationen av variabler
(t.ex. argument till en funktion), anger att variabeln är en pekare.
(Till exempel"int * p;" betyder att"p" är en pekare till ett heltal.)
@ -1619,26 +1625,23 @@ via strukturen"magic_api", som skickas till alla plugins funktioner. (Se
→ struct ←
Se "C-struktur"
→ tap ←
Se "klick"
→ tp-magic-config ←
Ett kommandoradsprogram som ger information om den installerade
versionen av Rita med Tux till plugin-utvecklare (t.ex. vilka
versionen av Rita med Tux till tilläggsutvecklare (t.ex. vilka
C-kompilatorflaggor de ska kompilera med och var plugin-delade objekt
och datafiler ska installeras).
Se manuskriptet "tp-magic-config(3)" man page.
→ tp_magic_api.h ←
En header-fil som definierar Rita med Tuxs API för magiska verktyg.
Plugins måste'#inkludera' den.
Tillägg måste '#include' den.
→ Uint32 ←
Ett 32-bitars, osignerat heltal (definierat av libSDL). Med andra ord,
fyra byte som kan representera 0 till 4 294 967 295. (Används
vanligtvis för att hålla tillräckligt med information för att lagra tre
eller fyra byte som representerar en pixels färg; dvs. RBGA-värde).
See also:
Se även:
@ Uint8
@ integer
@ unsigned
@ -1647,7 +1650,7 @@ via strukturen"magic_api", som skickas till alla plugins funktioner. (Se
→ Uint8 ←
Ett 8-bitars, osignerat heltal (definierat av libSDL). Med andra ord,
en byte som kan representera 0 till 255.
See also:
Se även:
@ Uint32
@ integer
@ unsigned
@ -1656,12 +1659,12 @@ via strukturen"magic_api", som skickas till alla plugins funktioner. (Se
→ utgåva ←
Att släppa en musknapp eller att ta bort ett finger eller en pekpenna
från en skärm eller surfplatta.
See also:
Se även:
@ klick
@ dra
→ variable ←
→ variabel
En konstruktion i datorprogrammering som innehåller ett värde som kan
refereras till igen senare genom att hänvisa till variabelns namn, och
vanligtvis ändras senare. Till exempel kan en variabel som innehåller

View file

@ -1343,7 +1343,7 @@ inkluderar:
Detaljerade instruktioner om kommandorads- och
konfigurationsfilsalternativ, för dem som inte vill använda verktyget
Konfigurera Rita med Tux för att hantera Rita med Tuxs konfiguration.
o dokumentation av "Magic"-verktyget ("magic-docs")
o Dokumentation för "Magi"-verktyget ("magic-docs")
Dokumentation för vart och ett av de för närvarande installerade
"Magic"-verktygen.
o Vanliga frågor ("Vanliga frågor") om Rita med Tux

View file

@ -143,7 +143,7 @@
På Linux och andra plattformar där X Desktop Group-standarderna används, platsen för användarens konfigurationsfiler. Specifikt var man hittar "<code>user-dirs.dirs</code>", var "<code>XDG_PICTURES_DIR</code>" kan definieras. Den används för att exportera ritningar och animerade GIF-filer. I allmänhet är den inställd på något i stil med "<code>$HOME/Pictures/</code>". Om inget anges kontrollerar Rita med Tux i katalogen "<code>$HOME/.config/</code>". Om konfigurationen inte kan hittas exporterar Rita med Tux helt enkelt ritningar och GIF-filer till "<code>$HOME</code>". </p>
<p>
Tux Paint also uses this to find FontConfig configuration files; see below. </p>
Rita med Tux använder också detta för att hitta FontConfig-konfigurationsfiler; se nedan. </p>
</dd>
<dt>
@ -228,7 +228,7 @@
</header>
<p>
Tux Paint uses <cite>FontConfig</cite> (via <cite>Pango</cite>, in turn via <cite>SDL_Pango</cite>) to find fonts that may be used by the "Text" and "Label" tools. </p>
Rita med Tux använder <cite>FontConfig</cite> (via <cite>Pango</cite>, i sin tur via <cite>SDL_Pango</cite>) för att hitta teckensnitt som kan användas av verktygen "Text" och "Etikett". </p>
<dl>
<dt>

View file

@ -701,18 +701,18 @@
<p>
Tux Paint checks a number of standard Operating System locations for fonts that the 'Text' and 'Label' tools might be able to use (unless the "<code>--nosysfonts</code>" option is set). The locations vary, depending on operating system. </p>
Rita med Tux kontrollerar ett antal standardplatser i operativsystemet för teckensnitt som verktygen "Text" och "Label" kan använda (om inte alternativet "<code>--nosysfonts</code>" är inställt). Platserna varierar beroende på operativsystem. </p>
<ul>
<li>
<strong>Windows</strong>
<ul>
<li>
The location specified by the "<code>Fonts</code>" option of the "<code>Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders</code>" Windows Registry key. </li>
Den plats som anges av alternativet "<code>Fonts</code>" i "<code>Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders</code>" Windows registernyckel. </li>
<li>
If the above fails, then "<code>C:\WINDOWS\FONTS</code>". </li>
<li>
The location specified by the "<code>Local AppData</code>" option of the "<code>Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders</code>" Windows Registry key. The path "<code>\Microsoft\Windows\Fonts</code>" is appended to that location. </li>
Den plats som anges av alternativet "<code>Local AppData</code>" i "<code>Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders</code>" Windows registernyckel. Sökvägen "<code>\Microsoft\Windows\Fonts</code>" läggs till den platsen. </li>
</ul>
</li>
<li>
@ -722,7 +722,7 @@
<li><code>/Library/Fonts</code></li>
<li><code>/usr/share/fonts</code></li>
<li><code>/usr/X11R6/lib/X11/fonts</code></li>
<li>The "<code>Library/Fonts</code>" folder in the user's home folder.</li>
<li>Mappen "<code>Library/Fonts</code>" i användarens hemmapp.</li>
</ul>
</li>
<li>
@ -734,7 +734,7 @@
<li>
<strong>Haiku</strong>
<p>
The locations found by asking Haiku's "Storage Kit" to find the directories on the "<code>/boot</code>" volume for: <ul>
De platser som hittades genom att be Haikus "Storage Kit" att hitta katalogerna på volymen<code>"/boot</code>" för: <ul>
<li><code>B_SYSTEM_FONTS_DIRECTORY</code></li>
<li><code>B_SYSTEM_NONPACKAGED_FONTS_DIRECTORY</code></li>
<li><code>B_USER_FONTS_DIRECTORY</code></li>
@ -770,21 +770,21 @@
<p>
Tux Paint utilizes <cite>FontConfig</cite> to find additional system-wide and user-specific fonts that the 'Text' and 'Label' tools might be able to use (unless the "<code>--nosysfonts</code>" option is set). It does this by looking for <cite>FontConfig</cite> configuration files ("<code>fonts.conf</code>") in various locations. </p>
Rita med Tux använder <cite>FontConfig</cite> för att hitta ytterligare systemomfattande och användarspecifika teckensnitt som verktygen 'Text' och 'Etikett' kan använda (om inte alternativet "<code>--nosysfonts</code>" är inställt). Detta görs genom att leta efter <cite>FontConfig</cite> konfigurationsfiler ("<code>fonts.conf</code>") på olika platser. </p>
<ul>
<li>
<strong>Windows</strong>
<ul>
<li>
The "<code>etc/fonts/fonts.conf</code>" file included with Tux Paint. </li>
Filen "<code>etc/fonts/fonts.conf</code>" som medföljer Rita med Tux. </li>
</ul>
</li>
<li>
<strong>macOS</strong>
<ul>
<li>
The path specified by the "<code>FONTCONFIG_PATH</code>" environment variable, if set. </li>
Den sökväg som anges av miljövariabeln "<code>FONTCONFIG_PATH</code>", om den är inställd. </li>
</ul>
</li>
<li>
@ -797,11 +797,11 @@
<strong>Linux/etc.</strong>
<ul>
<li>
The path specified by the "<code>FONTCONFIG_PATH</code>" environment variable, if set. </li>
Den sökväg som anges av miljövariabeln "<code>FONTCONFIG_PATH</code>", om den är inställd. </li>
<li>
If the above fails, then "<code>/etc/fonts/fonts.conf</code>". </li>
<li>
The path specified by the "<code>XDG_CONFIG_HOME</code>" environment variable, if set. There, it looks for the file "<code>fontconfig/fonts.conf</code>". </li>
Den sökväg som anges av miljövariabeln "<code>XDG_CONFIG_HOME</code>", om den är inställd. Där letar den efter filen "<code>fontconfig/fonts.conf</code>". </li>
<li>
If the above fails, then "<code>$HOME/.config/fontconfig/fonts.conf</code>". </li>
</ul>
@ -812,14 +812,14 @@
Each FontConfig configuration file ("<code>fonts.conf</code>") is examined for "<code>&lt;dir&gt;</code>" tags that specify directory (folder) paths where fonts might be found, and Tux Paint scans them and loads the fonts. If a "<code>prefix</code>" attribute is included in the tag, Tux Paint prefixes the path accordingly. <dl>
<dt><code>xdg</code></dt>
<dd>
The directory path specified is considered to be relative to the user's local data path, specified by the "<code>XDG_DATA_HOME</code>" environment variable. If not set, then "<code>.local/share</code>" under the path specified by the "<code>HOME</code>" environment variable will be used, if it exists. </dd>
Den angivna katalogsökvägen anses vara relativ i förhållande till användarens lokala datasökväg, som anges av miljövariabeln "<code>XDG_DATA_HOME</code>". Om den inte anges kommer "<code>.local/share</code>" under den sökväg som anges av miljövariabeln "<code>HOME</code>" att användas, om den finns. </dd>
<dt><code>relative</code></dt>
<dd>
The directory path specified is considered to be relative to the configuration file itself. </dd>
Den angivna katalogsökvägen anses vara relativ i förhållande till själva konfigurationsfilen. </dd>
<dt>
<code>default</code>, <code>cwd</code>, or no "<code>prefix</code>" attribute specified </dt>
<dd>
The directory path specified is considered to be relative to the current working directory (where Tux Paint is running), unless a root path is included at the start (e.g., "/", "C:\\", etc.) </dd>
Den angivna katalogsökvägen anses vara relativ till den aktuella arbetskatalogen (där Rita med Tux körs), såvida inte en rotsökväg anges i början (t.ex. "/", "C:\\" etc.) </dd>
</ul>
</p>
</section><!-- H2: FontConfig -->
@ -872,7 +872,7 @@
Tillsammans med överlägget i "målarboksstil" kan du också tillhandahålla en separat bakgrundsbild som en del av en "startbild". Överlägget fungerar på samma sätt: det kan inte ritas över, raderas eller påverkas av "Magic"-verktygen. Det kan däremot bakgrunden! </p>
<p>
När verktyget "Eraser" används på en bild som bygger på den här typen av bild "start, återgår den delen av duken till den ursprungliga bakgrundsbilden från bild "start i stället för att bli enfärgad, t.ex. vit. </p>
När verktyget "Eraser" används på en bild som bygger på den här typen av "start"-bild, återgår den delen av duken till den ursprungliga bakgrundsbilden från "start"-bild i stället för att bli enfärgad, t.ex. vit. </p>
<p>
Genom att skapa både ett överlägg och en bakgrund kan du skapa en "starter" som simulerar djup. Tänk dig en bakgrund som visar havet och en overlay som är en bild av ett rev. Du kan sedan rita (eller stämpla) fiskar i bilden. De kommer att dyka upp i havet, men aldrig "framför" revet. </p>
@ -882,13 +882,13 @@
</section><!-- H2: Scene-Style Starters -->
<p>
För bästa resultat bör "start" bilder vara minst lika stor som Rita med Tuxs ritduk. (Se avsnittet "Ladda andra bilder i Rita med Tux" i Rita med Tuxs huvuddokumentation (README) för detaljer om storlek) Om de inte är det kommer de att sträckas ut eller skalas. Detta görs utan att påverka formen ("bildförhållandet"), men kan dock ge upphov till viss utslätning av kanterna. </p>
För bästa resultat bör "start"-bilder vara minst lika stor som Rita med Tuxs ritduk. (Se avsnittet "Ladda andra bilder i Rita med Tux" i Rita med Tuxs huvuddokumentation (README) för detaljer om storlek) Om de inte är det kommer de att sträckas ut eller skalas. Detta görs utan att påverka formen ("bildförhållandet"), men kan dock ge upphov till viss utslätning av kanterna. </p>
<p>
Placera dem i katalogen "<code><b>starters</b></code>". När dialogrutan "New" öppnas i Rita med Tux kommer "start" bilder att visas i den skärm som visas, efter de olika valmöjligheterna för enfärg. </p>
Placera dem i katalogen "<code><b>starters</b></code>". När dialogrutan "New" öppnas i Rita med Tux kommer "start"-bilder att visas i den skärm som visas, efter de olika valmöjligheterna för enfärg. </p>
<p class="note">
<span title="Information">&#128161;</span> <strong>Obs:</strong> "Startbilder" "bifogas" till sparade bilder via en liten textfil som har samma namn som den sparade filen, men med "<code>.dat</code>" som tillägg. Detta gör att den kan fortsätta att påverka teckningen även efter att Rita med Tux har avslutats, eller en annan bild har laddats eller en ny bild har skapats. (Med andra ord, om du baserar en teckning på en bild "start, kommer den alltid att påverkas av den) </p>
<span title="Information">&#128161;</span> <strong>Obs:</strong> "Startbilder" "bifogas" till sparade bilder via en liten textfil som har samma namn som den sparade filen, men med "<code>.dat</code>" som tillägg. Detta gör att den kan fortsätta att påverka teckningen även efter att Rita med Tux har avslutats, eller en annan bild har laddats eller en ny bild har skapats. (Med andra ord, om du baserar en teckning på en "start"-bild, kommer den alltid att påverkas av den) </p>
<section><!-- H2: Starter Options -->
<header>

View file

@ -2,7 +2,7 @@
<html>
<head>
<title>
Tux Paint Magic Tool Plugin API Documentation </title>
Tux Paint Magic Tool Plugin API-dokumentation </title>
<meta http-equiv="Content-Type"
content="text/html; charset=utf-8">
<style>
@ -94,7 +94,7 @@
version 0.9.36 </h1>
<h2>
Magic Tool Plugin API Documentation </h2>
Dokumentation för tillägget Magi-verktygets API </h2>
<p>
Copyright © 2007-2025 av olika bidragsgivare; se <a href="../../AUTHORS.txt">AUTHORS.txt</a>.<br>
@ -120,25 +120,25 @@
<tr>
<td>
<ul>
<li><a href="#prereqs">Förutsättningar</a></li> <li><a href="#interfaces">Interfaces</a> <ul>
<li><a href="#magic_plugin_funcs">plugin-funktioner för "Magic"-verktyget</a> <ul>
<li><a href="#common_args">Vanliga argument till plugin-funktioner</a></li> <li><a href="#toolfuncs">Nödvändiga plugin-funktioner</a> <ul>
<li><a href="#housekeeping">Plugin "hushållning" funktioner</a></li> <li><a href="#eventfuncs">Plugin-händelsefunktioner</a></li> </ul>
<li><a href="#prereqs">Förutsättningar</a></li> <li><a href="#interfaces">Gränssnitt</a> <ul>
<li><a href="#magic_plugin_funcs">tilläggsfunktioner för "Magi"-verktyget</a> <ul>
<li><a href="#common_args">Vanliga argument till tilläggsfunktioner</a></li> <li><a href="#toolfuncs">Nödvändiga tilläggsfunktioner</a> <ul>
<li><a href="#housekeeping">Tilläggsfunktioner för "hushållning"</a></li> <li><a href="#eventfuncs">Händelsefunktioner för tillägg</a></li> </ul>
</li>
</ul>
</li>
<li><a href="#tpfuncs">Tux Paint Functions and Data</a> <ul>
<li><a href="#pixel_manip">Pixelmanipulationer</a></li> <li><a href="#helper_funcs">Hjälpfunktioner</a></li> <li><a href="#informational">Information</a></li> <li><a href="#sound">Sound Functions</a></li> <li><a href="#syscalls">Tux Paint System Calls</a></li> <li><a href="#color_convs">Färgkonverteringar</a></li> </ul>
<li><a href="#tpfuncs">Tux Paint Funktioner och data</a> <ul>
<li><a href="#pixel_manip">Pixelmanipulationer</a></li> <li><a href="#helper_funcs">Hjälpfunktioner</a></li> <li><a href="#informational">Information</a></li> <li><a href="#sound">Ljudfunktioner</a></li> <li><a href="#syscalls">Systemanrop för Tux Paint</a></li> <li><a href="#color_convs">Färgkonverteringar</a></li> </ul>
</li>
<li><a href="#macros">Hjälpmakron i "tp_magic_api.h"</a></li> <li><a href="#consts">Constant Definitions in "tp_magic_api.h"</a></li> </ul>
<li><a href="#macros">Hjälpmakron i "tp_magic_api.h"</a></li> <li><a href="#consts">Konstantdefinitioner i "tp_magic_api.h"</a></li> </ul>
</li>
<li><a href="#compiling">Compiling</a> <ul>
<li><a href="#compiling-linux">Linux and other Unix-like Platforms</a></li> <li><a href="#compiling-windows">Fönster</a></li> <li><a href="#compiling-macos">macOS</a></li> </ul>
<li><a href="#compiling">Kompilering</a> <ul>
<li><a href="#compiling-linux">Linux och andra Unix-liknande plattformar</a></li> <li><a href="#compiling-windows">Fönster</a></li> <li><a href="#compiling-macos">macOS</a></li> </ul>
</li>
<li><a href="#installing">Installing</a> <ul>
<li><a href="#installing-linux">Linux and other Unix-like Platforms</a></li> <li><a href="#installing-windows">Fönster</a></li> <li><a href="#installing-macos">macOS</a></li> </ul>
<li><a href="#installing">Installering</a> <ul>
<li><a href="#installing-linux">Linux och andra Unix-liknande plattformar</a></li> <li><a href="#installing-windows">Fönster</a></li> <li><a href="#installing-macos">macOS</a></li> </ul>
</li>
<li><a href="#multiple">Skapa plugins med flera effekter</a></li> <li><a href="#examples">Example Code</a></li> <li><a href="#help">Få hjälp</a></li> <li><a href="#glossary">Ordlista</a></li> </ul>
<li><a href="#multiple">Skapa tillägg med flera effekter</a></li> <li><a href="#examples">Exempelkod</a></li> <li><a href="#help">Få hjälp</a></li> <li><a href="#glossary">Ordlista</a></li> </ul>
</td>
</tr>
</table>
@ -153,10 +153,10 @@
</header>
<p>
Rita med Tux's "Magic"-verktyg kommer som en uppsättning "plugins" som laddas när Rita med Tux startar. </p>
Rita med Tux "Magi"-verktyg kommer som en uppsättning "tillägg" som laddas när Rita med Tux startar. </p>
<p>
Denna uppdelning möjliggör en snabbare utveckling av "magiska" verktyg och gör det möjligt för programmerare att skapa och testa nya verktyg utan att behöva integrera dem i Rita med Tuxs källkod. (Användare av mer professionella grafikverktyg, t.ex. GIMP, bör känna till detta plugin-koncept) </div>
Denna uppdelning möjliggör en snabbare utveckling av "magiska" verktyg och gör det möjligt för programmerare att skapa och testa nya verktyg utan att behöva integrera dem i Rita med Tuxs källkod. (Användare av mer professionella grafikverktyg, t.ex. GIMP, bör känna till detta tilläggskoncept) </div>
</section><!-- H1: Overview -->
@ -176,20 +176,20 @@
<section class="outer"><!-- H1: Interfaces -->
<header>
<h1 id="interfaces">
Interfaces </h1>
Gränssnitt </h1>
</header>
<p>
De som skapar plugins för "magiska" verktyg för Rita med Tux måste tillhandahålla vissa gränssnitt (C-funktioner) som Rita med Tux kan anropa. </p>
De som skapar tillägg för "magiska" verktyg för Rita med Tux måste tillhandahålla vissa gränssnitt (C-funktioner) som Rita med Tux kan anropa. </p>
<p>
Rita med Tux använder SDL:s rutiner "SDL_LoadObject()" och "SDL_LoadFunction()" för att ladda plugins (filer med delade objekt, t.ex. "<code>.so</code>"-filer i Linux eller "<code>.dll</code>"-filer i Windows) och hitta funktionerna i dem. </p>
Rita med Tux använder SDL:s rutiner "SDL_LoadObject()" och "SDL_LoadFunction()" för att ladda tillägg (filer med delade objekt, t.ex. "<code>.so</code>"-filer i Linux eller "<code>.dll</code>"-filer i Windows) och hitta funktionerna i dem. </p>
<p>
Rita med Tux tillhandahåller i sin tur ett antal hjälpfunktioner som plugin-programmet kan (eller ibland måste) använda. Detta exponeras som en C-struktur (eller<code>"struct</code>") som innehåller pekare till funktioner och andra data i Rita med Tux. En pekare till denna struktur skickas vidare till plugin-funktionerna som ett argument när Rita med Tux anropar dem. </p>
Rita med Tux tillhandahåller i sin tur ett antal hjälpfunktioner som tilläggsprogrammet kan (eller ibland måste) använda. Detta exponeras som en C-struktur (eller<code>"struct</code>") som innehåller pekare till funktioner och andra data i Rita med Tux. En pekare till denna struktur skickas vidare till plugin-funktionerna som ett argument när Rita med Tux anropar dem. </p>
<p>
Plugins bör <code>#inkludera</code> C-huvudfilen<code>"tp_magic_api.h</code>", som exponerar plugin-API:et för verktyget "Magic". När du kör C-kompilatorn för att bygga ett plugin bör du också använda kommandoradsverktyget<code>"tp-magic-config</code>" för att få lämpliga kompilatorflaggor (till exempel var kompilatorn kan hitta Rita med Tux-pluginhuvudfilen, liksom SDLs huvudfiler) för att bygga ett plugin. (Se<a href="#compiling">"Kompilering</a>" nedan.) </p>
Tillägg bör <code>#inkludera</code> C-huvudfilen<code>"tp_magic_api.h</code>", som exponerar plugin-API:et för verktyget "Magic". När du kör C-kompilatorn för att bygga ett plugin bör du också använda kommandoradsverktyget<code>"tp-magic-config</code>" för att få lämpliga kompilatorflaggor (till exempel var kompilatorn kan hitta Rita med Tux-pluginhuvudfilen, liksom SDLs huvudfiler) för att bygga ett plugin. (Se<a href="#compiling">"Kompilering</a>" nedan.) </p>
<p>
C-huvudfilen och kommandoradsverktyget som nämns ovan ingår i Rita med Tux - eller i vissa fall som en del av ett "Rita med Tux 'Magic' Tool Plugin Development package". </p>
@ -197,20 +197,20 @@
<section class="indent"><!-- H2: 'Magic' tool plugin functions -->
<header>
<h2 id="magic_plugin_funcs">
plugin-funktioner för "Magic"-verktyget </h2>
tilläggsfunktioner för "Magi"-verktyget </h2>
</header>
<p>
plugins för "Magic"-verktyg <i>måste</i> innehålla de funktioner som anges nedan. <b>Observera:</b> För att undvika kollisioner i namnrymden måste varje funktionsnamn börja med det delade objektets filnamn (t.ex. skulle "blur.so" eller "blur.dll" ha funktioner vars namn börjar med<code>"blur_</code>"). <i>Detta inkluderar privata funktioner</i> (sådana som inte används direkt av Rita med Tux), såvida du inte deklarerar dem som<code>"statiska</code>". </p>
Tillägg för "Magi"-verktyg <i>måste</i> innehålla de funktioner som anges nedan. <b>Observera:</b> För att undvika kollisioner i namnrymden måste varje funktionsnamn börja med det delade objektets filnamn (t.ex. skulle "blur.so" eller "blur.dll" ha funktioner vars namn börjar med<code>"blur_</code>"). <i>Detta inkluderar privata funktioner</i> (sådana som inte används direkt av Rita med Tux), såvida du inte deklarerar dem som<code>"statiska</code>". </p>
<section class="indent"><!-- H3: Common arguments to plugin functions -->
<header>
<h3 id="common_args">
Vanliga argument till plugin-funktioner </h3>
Vanliga argument till tilläggsfunktioner </h3>
</header>
<p>
Här följer en beskrivning av de argument som många av funktionerna i ditt plugin måste acceptera. </p>
Här följer en beskrivning av de argument som många av funktionerna i ditt tillägg måste acceptera. </p>
<dl>
<dt><code><b>magic_api * api</b></code></dt>
@ -218,7 +218,7 @@
<p>
Pekare till en C-struktur som innehåller pekare till Rita med Tux-funktioner och andra data som insticksprogrammet kan (och ibland bör) använda. Innehållet i denna struktur <a href="#tpfuncs">beskrivs nedan.</a>. </p>
<p>
Observera: Strukturen <code>magic_api</code> definieras i C-headerfilen<code>"tp_magic_api.h</code>", som du bör inkludera högst upp i ditt plugins C-källfil: <blockquote><code>
Observera: Strukturen <code>magic_api</code> definieras i C-headerfilen<code>"tp_magic_api.h</code>", som du bör inkludera högst upp i ditt tilläggs C-källfil: <blockquote><code>
#include "tp_magic_api.h"
</code></blockquote>
</p>
@ -257,19 +257,19 @@
<section class="indent"><!-- H3: Required Plugin Functions -->
<header>
<h3 id="toolfuncs">
Nödvändiga plugin-funktioner </h3>
Nödvändiga tilläggsfunktioner </h3>
</header>
<p>
Ditt insticksprogram måste minst innehålla alla följande funktioner. </p>
<p>
<b>Observera:</b> Kom ihåg att plugin-programmets funktionsnamn måste föregås av plugin-programmets filnamn. Det vill säga, om ditt plugin heter<code>"zoom.so</code>" (på Linux) eller "<code>zoom.dll</code>" (på Windows), måste namnen på dina funktioner börja med "<code><b>zoom_</b></code>" (t.ex. "<code>zoom_get_name(...)</code>"). </p>
<b>Observera:</b> Kom ihåg att tilläggsprogrammets funktionsnamn måste föregås av plugin-programmets filnamn. Det vill säga, om ditt plugin heter<code>"zoom.so</code>" (på Linux) eller "<code>zoom.dll</code>" (på Windows), måste namnen på dina funktioner börja med "<code><b>zoom_</b></code>" (t.ex. "<code>zoom_get_name(...)</code>"). </p>
<section class="indent"><!-- H4: Plugin "housekeeping" functions -->
<header>
<h4 id="housekeeping">
Plugin "hushållning" funktioner </h4>
Tilläggsfunktioner för "hushållning" </h4>
</header>
<dl>
@ -284,9 +284,9 @@
<dt><code><b>int init(magic_api * api, Uint8 disabled_features, Uint8 complexity_level)</b></code></dt>
<dd>
<p>
Plugin-programmet bör göra alla initialiseringar här. Returnera '1' om initieringen lyckades, eller '0' om den inte gjorde det (och Rita med Tux kommer inte att presentera några 'Magic'-verktyg från insticksprogrammet). </p>
Tilläggsprogrammet bör göra alla initialiseringar här. Returnera '1' om initieringen lyckades, eller '0' om den inte gjorde det (och Rita med Tux kommer inte att presentera några 'Magic'-verktyg från insticksprogrammet). </p>
<p>
<b>Obs:</b> Anropas en gång av Rita med Tux, vid uppstart. Det anropas efter<code>"api_version()</code>", om Rita med Tux anser att ditt plugin är kompatibelt. </p>
<b>Obs:</b> Anropas en gång av Rita med Tux, vid uppstart. Det anropas efter<code>"api_version()</code>", om Rita med Tux anser att ditt tillägg är kompatibelt. </p>
<p>
Värdet <code>disabled_features</code> innehåller bits som ställts in för alla Rita med Tux-funktioner som är relevanta för Magic-verktyg som har inaktiverats i den här sessionen. Test med hjälp av C:s bitvisa operator "och",<code>"&amp;".</code> Funktionerna är definierade i <code>tp_magic_api.h:</code>: <ul>
<li>
@ -294,7 +294,7 @@
<li>
<code>MAGIC_FEATURE_SIZE</code>: Storlek på magiskt verktyg (<code>--nomagicsizes</code>) </li>
</ul>
Ditt/dina magiska verktyg kan vilja reagera på olika sätt beroende på om en eller flera funktioner har inaktiverats. (Till exempel har det magiska verktyget "Brick" alltid erbjudit två verktygsvarianter: stort och litet. Med tillägget av storleksfunktionen behövs bara ett verktyg. Men när storleksalternativet är inaktiverat kan plugin-programmet återgå till att tillhandahålla två separata verktyg) </p>
Ditt/dina magiska verktyg kan vilja reagera på olika sätt beroende på om en eller flera funktioner har inaktiverats. (Till exempel har det magiska verktyget "Brick" alltid erbjudit två verktygsvarianter: stort och litet. Med tillägget av storleksfunktionen behövs bara ett verktyg. Men när storleksalternativet är inaktiverat kan tilläggsprogrammet återgå till att tillhandahålla två separata verktyg) </p>
<p>
Variabeln <code>complexity_level</code> innehåller den "komplexitetsnivå" som Rita med Tux magiska verktyg kan erbjuda - det vill säga användarens expertisnivå. Nivåerna definieras i <code>tp_magic_api.h:</code>: <ul>
<li>
@ -302,7 +302,7 @@
<li>
<code>MAGIC_COMPLEXITY_BEGINNER</code> (1): Nybörjare (<code>--complexity=beginner</code>) </li>
<li>
<code>MAGIC_COMPLEXITY_ADVANCED</code> (2): Advanced (default) (<code>--complexity=advanced</code>) </li>
<code>MAGIC_COMPLEXITY_ADVANCED</code> (2): Avancerad (standard) (<code>--complexity=advanced</code>) </li>
</ul>
Ditt/dina Magic-verktyg kanske vill reagera olika beroende på användarens kunskapsnivå, antingen genom att förenkla hur varje verktyg fungerar eller genom att utesluta ett eller flera av dem helt. (Till exempel är verktygsuppsättningarna för 1-, 2- och 3-punktsperspektiv helt inaktiva i läget "nybörjare". I "nybörjarläget" är ritverktygen tillgängliga, men verktygen för att redigera vanishing-punkternas positioner är inaktiverade; standardvanishing-punkterna används. I själva verket visas i "nybörjar"-läget ytterligare ett ritverktyg för 3-punktsperspektiv, med alternativa vanishingpunkter) </p>
<p>
@ -312,7 +312,7 @@
<dt><code><b>int get_tool_count(magic_api * api)</b></code></dt>
<dd>
<p>
Detta ska returnera antalet magiska verktyg som detta plugin tillhandahåller till Rita med Tux. </p>
Detta ska returnera antalet magiska verktyg som detta tillägg tillhandahåller till Rita med Tux. </p>
<p>
<b>Obs:</b> Anropas en gång av Rita med Tux, vid start. Den anropas efter din<code>"init()</code>", om den lyckades. </p>
<p>
@ -328,7 +328,7 @@
<li>
<code>MODE_PAINT</code> - måla på fri hand (klicka och dra) </li>
<li>
<code>MODE_FULLSCREEN</code> - applies to full image with one click </li>
<code>MODE_FULLSCREEN</code> - gäller för hela bilden med ett klick </li>
<li>
<code>MODE_PAINT_WITH_PREVIEW</code> - frihandsmålning, med förhandsgranskning (klicka och dra) </li>
<li>
@ -336,7 +336,7 @@
</ul>
t.ex. om ditt verktyg är det enda som användaren kan måla med, returnera<code>"MODE_PAINT</code>". Om användaren kan göra båda, returnera<code>"MODE_PAINT | MODE_FULLSCREEN</code>" för att tala om för Rita med Tux att den kan göra båda. </p>
<p>
<b>Observera:</b> Anropas en gång för varje Magic-verktyg som ditt plugin påstår sig innehålla (genom ditt<code>"get_tool_count()</code>"). </p>
<b>Observera:</b> Anropas en gång för varje Magic-verktyg som ditt tillägg påstår sig innehålla (genom ditt<code>"get_tool_count()</code>"). </p>
<p>
<b>Obs:</b> Tillagd till Rita med Tux 0.9.21; Magic API-version 0x00000002. </p>
</dd>
@ -348,7 +348,7 @@
<p>
Rita med Tux kommer att <code>free()</code> strängen vid avslutning, så du bör linda in den i ett C <code>strdup()</code> -anrop. </p>
<p>
<b>Observera:</b> Anropas en gång för varje Magic-verktyg som ditt plugin påstår sig innehålla (genom ditt<code>"get_tool_count()</code>"). </p>
<b>Observera:</b> Anropas en gång för varje Magic-verktyg som ditt tillägg påstår sig innehålla (genom ditt<code>"get_tool_count()</code>"). </p>
</dd>
<dt><code><b>int get_group(magic_api * api, int which)</b></code></dt>
@ -372,7 +372,7 @@
</ul>
</p>
<p>
<b>Observera:</b> Anropas en gång för varje Magic-verktyg som ditt plugin påstår sig innehålla (genom ditt<code>"get_tool_count()</code>"). </p>
<b>Observera:</b> Anropas en gång för varje Magic-verktyg som ditt tillägg påstår sig innehålla (genom ditt<code>"get_tool_count()</code>"). </p>
<p>
<b>Obs:</b> Tillagd till Rita med Tux 0.9.27; Magic API-version 0x00000005. </p>
</dd>
@ -384,7 +384,7 @@
<p>
Rita med Tux kommer att frigöra ("<code>SDL_FreeSurface()</code>") ytan när den avslutas. </p>
<p>
<b>Observera:</b> Anropas en gång för varje Magic-verktyg som ditt plugin påstår sig innehålla (genom ditt<code>"get_tool_count()</code>"). <p>
<b>Observera:</b> Anropas en gång för varje Magic-verktyg som ditt tillägg påstår sig innehålla (genom ditt<code>"get_tool_count()</code>"). <p>
</dd>
<dt><code><b>char * get_description(magic_api * api, int which, int mode)</b></code></dt>
@ -394,9 +394,9 @@
<p>
Rita med Tux kommer att <code>free()</code> strängen vid avslutning, så du bör linda in den i ett C <code>strdup()</code> -anrop. </p>
<p>
<b>Obs:</b> För varje Magic-verktyg som ditt plugin påstår sig innehålla (rapporterat av din "<code>get_tool_count()</code>"-funktion), kommer denna funktion att anropas för varje läge som verktyget påstår sig stödja (rapporterat av din "<code>modes()</code>"-funktion). </p>
<b>Obs:</b> För varje Magic-verktyg som ditt tillägg påstår sig innehålla (rapporterat av din "<code>get_tool_count()</code>"-funktion), kommer denna funktion att anropas för varje läge som verktyget påstår sig stödja (rapporterat av din "<code>modes()</code>"-funktion). </p>
<p>
Med andra ord, om ditt plugin innehåller två verktyg, ett som bara fungerar i färgläge och det andra som fungerar i både färgläge och fullbildsläge, kommer ditt plugins<code>"get_description()</code>" att anropas tre gånger. </p>
Med andra ord, om ditt tillägg innehåller två verktyg, ett som bara fungerar i färgläge och det andra som fungerar i både färgläge och helbildsläge, kommer ditt tilläggs "<code>get_description()</code>" att anropas tre gånger. </p>
</dd>
<dt><code><b>int requires_colors(magic_api * api, int which)</b></code></dt>
@ -404,7 +404,7 @@
<p>
Returnerar en "1" om "Magic"-verktyget accepterar färger (paletten "Colors" i Rita med Tux kommer att vara tillgänglig), eller "0" om inte. </p>
<p>
<b>Observera:</b> Anropas en gång för varje Magic-verktyg som ditt plugin påstår sig innehålla (genom ditt<code>"get_tool_count()</code>"). </p>
<b>Observera:</b> Anropas en gång för varje Magic-verktyg som ditt tillägg påstår sig innehålla (genom ditt<code>"get_tool_count()</code>"). </p>
</dd>
<dt><code><b>Uint8 accepted_sizes(magic_api * api, int which, int mode)</b></code></dt>
@ -412,7 +412,7 @@
<p>
Returnerar hur många storleksvariationer som 'Magic'-verktyget accepterar i det angivna läget (dvs.<code>'MODE_PAINT</code>' eller<code>'MODE_FULLSCREEN</code>). Returnera '0' om 'Magic'-verktyget inte ska erbjuda storleksalternativ. Att returnera '1' är samma sak som att returnera '0'. </p>
<p>
<b>Obs:</b> För varje Magic-verktyg som ditt plugin påstår sig innehålla (rapporterat av din "<code>get_tool_count()</code>"-funktion), kommer denna funktion att anropas för varje läge som verktyget påstår sig stödja (rapporterat av din "<code>modes()</code>"-funktion). </p>
<b>Obs:</b> För varje Magic-verktyg som ditt tillägg påstår sig innehålla (rapporterat av din "<code>get_tool_count()</code>"-funktion), kommer denna funktion att anropas för varje läge som verktyget påstår sig stödja (rapporterat av din "<code>modes()</code>"-funktion). </p>
<p>
<b>Obs:</b> Tillagd till Rita med Tux 0.9.30; Magic API-version 0x00000008. </p>
</dd>
@ -422,7 +422,7 @@
<p>
Returnerar den standardstorlek som verktyget "Magic" ska börja med i det angivna läget. Detta kommer att vara standardinställningen för verktyget första gången det används under en Rita med Tux-session. Om Rita med Tux anropas med storleksalternativet avaktiverat kommer detta att vara den enda storlek som Rita med Tux begär. Returnera ett tal mellan '1' och det belopp som du returnerade i <code>accepted_sizes()</code>. </p>
<p>
<b>Obs:</b> För varje Magic-verktyg som ditt plugin påstår sig innehålla (rapporterat av din "<code>get_tool_count()</code>"-funktion), kommer denna funktion att anropas för varje läge som verktyget påstår sig stödja (rapporterat av din "<code>modes()</code>"-funktion). </p>
<b>Obs:</b> För varje Magic-verktyg som ditt tillägg påstår sig innehålla (rapporterat av din "<code>get_tool_count()</code>"-funktion), kommer denna funktion att anropas för varje läge som verktyget påstår sig stödja (rapporterat av din "<code>modes()</code>"-funktion). </p>
<p>
<b>Obs:</b> Tillagd till Rita med Tux 0.9.30; Magic API-version 0x00000008. </p>
</dd>
@ -430,9 +430,9 @@
<dt><code><b>void shutdown(magic_api * api)</b></code></dt>
<dd>
<p>
Plugin-programmet bör göra all upprensning här. Om du har allokerat något minne eller använt SDL_Mixer för att ladda några ljud under <code>init()</code>, till exempel, bör du <code>frigöra(</code> ) det allokerade minnet och <code>Mix_FreeChunk()</code> ljuden här. </p>
Tilläggsprogrammet bör göra all upprensning här. Om du har allokerat något minne eller använt SDL_Mixer för att ladda några ljud under <code>init()</code>, till exempel, bör du <code>frigöra(</code> ) det allokerade minnet och <code>Mix_FreeChunk()</code> ljuden här. </p>
<p>
<b>Note:</b> This function is called once, when Tux Paint exits. </p>
<b>Observera:</b> Denna funktion anropas en gång när Rita med Tux avslutas. </p>
</dd>
</dl>
</section><!-- H4: Plugin "housekeeping" functions -->
@ -440,7 +440,7 @@
<section class="indent"><!-- H4: Plugin event functions -->
<header>
<h4 id="eventfuncs">
Plugin-händelsefunktioner </h4>
Händelsefunktioner för tillägg </h4>
</header>
<dl>
@ -450,7 +450,7 @@
</dt>
<dd>
<p>
<code>switchin()</code> anropas när ett av plugin-programmets magiska verktyg blir aktivt, och <code>switchout()</code> anropas när ett blir inaktivt. Detta kan bero på att användaren just har klickat på ett specifikt magiskt verktyg (det aktuella verktyget kopplas ut och ett nytt kopplas in). </p>
<code>switchin()</code> anropas när ett av tilläggsprogrammets magiska verktyg blir aktivt, och <code>switchout()</code> anropas när ett blir inaktivt. Detta kan bero på att användaren just har klickat på ett specifikt magiskt verktyg (det aktuella verktyget kopplas ut och ett nytt kopplas in). </p>
<p>
Det kan också hända när användaren lämnar/återvänder från valet av "magiska" verktyg när han/hon utför någon annan aktivitet (t.ex. använder ett annat verktyg, som "Text" eller "Brush", aktiverar ett tillfälligt verktyg, som "Undo" och "Redo", eller återvänder från en dialog - eventuellt med en ny bild när den växlar tillbaka - som "Open", "New" eller "Quit"). I detta fall är samma magiska verktyg först "utslaget" och sedan "inslaget igen", vanligtvis några ögonblick senare. </p>
<p>
@ -466,7 +466,7 @@
<dt><code><b>void set_color(magic_api * api, int which, SDL_Surface * canvas, SDL_Surface * last, Uint8 r, Uint8 g, Uint8 b, SDL_Rect * update_rect) </b></code></dt>
<dd>
<p>
Rita med Tux anropar denna funktion för att informera insticksprogrammet om RGB-värdena för den aktuella valda färgen i Rita med Tuxs palett "Colors". (Funktionen anropas när ett av plugin-programmets magiska verktyg som accepterar färger blir aktivt, och när användaren väljer en ny färg medan ett sådant verktyg är aktivt) </p>
Rita med Tux anropar denna funktion för att informera insticksprogrammet om RGB-värdena för den aktuella valda färgen i Rita med Tuxs palett "Colors". (Funktionen anropas när ett av tilläggsprogrammets magiska verktyg som accepterar färger blir aktivt, och när användaren väljer en ny färg medan ett sådant verktyg är aktivt) </p>
<p>
I allmänhet kommer Magic-verktygen inte att ändra målarduken på något sätt när de får en uppdaterad färg, men det är möjligt. (Till exempel använder verktygen "Zoom" och "Perspective" effekter som använder det aktuella färgvalet som en solid bakgrund. Effekterna kan justeras med efterföljande klick/drag-operationer, men du kan också justera bakgrundsfärgen, utan att ändra zoomnivån eller perspektivet, genom att helt enkelt välja en ny färg) </p>
<p>
@ -476,7 +476,7 @@
<dt><code><b>void set_size(magic_api * api, int which, int mode, SDL_Surface * canvas, SDL_Surface * last, Uint8 size, SDL_Rect * update_rect) </b></code></dt>
<dd>
<p>
Rita med Tux anropar denna funktion för att informera insticksprogrammet om det valda storleksalternativet för "Magic"-verktyget. (Den anropas när ett av plugin-programmets magiska verktyg som accepterar storlekar blir aktivt, och när användaren väljer en ny storlek medan ett sådant verktyg är aktivt) </p>
Rita med Tux anropar denna funktion för att informera insticksprogrammet om det valda storleksalternativet för "Magic"-verktyget. (Den anropas när ett av tilläggsprogrammets magiska verktyg som accepterar storlekar blir aktivt, och när användaren väljer en ny storlek medan ett sådant verktyg är aktivt) </p>
<p>
I allmänhet kommer Magic-verktygen inte att ändra duken på något sätt när de får en uppdaterad storlek, men det är möjligt. </p>
<p>
@ -486,9 +486,9 @@
<dt><code><b>void click(magic_api * api, int which, int mode, SDL_Surface * snapshot, SDL_Surface * canvas, int x, int y, SDL_Rect * update_rect) </b></code></dt>
<dd>
<p>
Plugin-programmet ska tillämpa lämpligt "Magic"-verktyg på<code>"canvas</code>"-ytan. (x,y)-koordinaterna är var musen befann sig (inom canvasen) när musknappen klickades, och du får veta vilket "läge" ditt verktyg är i (dvs.<code>"MODE_PAINT</code>" eller<code>"MODE_FULLSCREEN</code>"). </p>
Tilläggsprogrammet ska tillämpa lämpligt "Magic"-verktyg på<code>"canvas</code>"-ytan. (x,y)-koordinaterna är var musen befann sig (inom canvasen) när musknappen klickades, och du får veta vilket "läge" ditt verktyg är i (dvs.<code>"MODE_PAINT</code>" eller<code>"MODE_FULLSCREEN</code>"). </p>
<p>
Plugin-programmet bör rapportera tillbaka vilken del av duken som påverkades genom att fylla i elementen (x,y) och (w,h) i<code>"update_rect</code>". </p>
Tilläggsprogrammet bör rapportera tillbaka vilken del av duken som påverkades genom att fylla i elementen (x,y) och (w,h) i<code>"update_rect</code>". </p>
<p>
Innehållet i teckningsytan omedelbart före musklicket lagras i<code>"snapshot</code>"-ytan. </p>
</dd>
@ -496,23 +496,23 @@
<dt><code><b>void drag(magic_api * api, int which, SDL_Surface * snapshot, SDL_Surface * canvas, int ox, int oy, int x, int y, SDL_Rect * update_rect)</b></code></dt>
<dd>
<p>
Plugin-programmet bör tillämpa lämpligt "Magic"-verktyg på<code>"canvas"</code>-ytan. Koordinaterna (ox,oy) och (x,y) är musens position i början och slutet av strecket. </p>
Tilläggsprogrammet bör tillämpa lämpligt "Magic"-verktyg på<code>"canvas"</code>-ytan. Koordinaterna (ox,oy) och (x,y) är musens position i början och slutet av strecket. </p>
<p>
Plugins som låter användaren "rita" effekter på duken använder vanligtvis Rita med Tux's<code>"line()</code>" 'Magic' tool plugin-hjälpfunktion för att beräkna punkterna på linjen mellan (ox,oy) och (x,y), och anropar en annan funktion inom pluginet för att tillämpa effekten vid varje punkt. (Se<a href="#tpfuncs">"Rita med Tux-funktioner och data</a>" nedan). </p>
Tillägg som låter användaren "rita" effekter på duken använder vanligtvis Rita med Tux "<code>line()</code>" 'Magic' tool tilläggshjälpfunktion för att beräkna punkterna på linjen mellan (ox,oy) och (x,y), och anropar en annan funktion inom pluginet för att tillämpa effekten vid varje punkt. (Se<a href="#tpfuncs">"Rita med Tux-funktioner och data</a>" nedan). </p>
<p>
Plugin-programmet bör rapportera tillbaka vilken del av duken som påverkades genom att fylla i elementen (x,y) och (w,h) i<code>"update_rect</code>". </p>
Tilläggsprogrammet bör rapportera tillbaka vilken del av duken som påverkades genom att fylla i elementen (x,y) och (w,h) i<code>"update_rect</code>". </p>
<p>
Obs: Innehållet i ritningsytan omedelbart före musklicket förblir detsamma som det var (när plugin-programmets "<code>click()</code>"-funktion anropades) och är fortfarande tillgängligt i<code>"snapshot</code>"-ytan. <p>
Obs: Innehållet i ritningsytan omedelbart före musklicket förblir detsamma som det var (när tilläggsprogrammets "<code>click()</code>"-funktion anropades) och är fortfarande tillgängligt i<code>"snapshot</code>"-ytan. <p>
</dd>
<dt><code><b>void release(magic_api * api, int which, SDL_Surface * snapshot, SDL_Surface * canvas, int x, int y, SDL_Rect * update_rect)</b></code></dt>
<dd>
<p>
Plugin-programmet bör använda lämpligt "Magic"-verktyg på<code>"canvas"</code>-ytan. (x,y)-koordinaterna är var musen befann sig (inom duken) när musknappen släpptes. </p>
Tilläggsprogrammet bör använda lämpligt "Magic"-verktyg på<code>"canvas"</code>-ytan. (x,y)-koordinaterna är var musen befann sig (inom duken) när musknappen släpptes. </p>
<p>
Plugin-programmet bör rapportera tillbaka vilken del av duken som påverkades genom att fylla i elementen (x,y) och (w,h) i "update_rect". </p>
Tilläggsprogrammet bör rapportera tillbaka vilken del av duken som påverkades genom att fylla i elementen (x,y) och (w,h) i "update_rect". </p>
<p>
<b>Obs:</b> Innehållet i ritningsytan omedelbart före musklicket förblir detsamma som det var (när plugin-programmets "<code>click()</code>"-funktion anropades) och är fortfarande tillgängligt i "snapshot"-ytan. </p>
<b>Obs:</b> Innehållet i ritningsytan omedelbart före musklicket förblir detsamma som det var (när tilläggsprogrammets "<code>click()</code>"-funktion anropades) och är fortfarande tillgängligt i "snapshot"-ytan. </p>
</dd>
</dl>
</section><!-- H4: Plugin event functions -->
@ -522,11 +522,11 @@
<section class="indent"><!-- H2: Tux Paint Functions and Data -->
<header>
<h2 id="tpfuncs">
Tux Paint Functions and Data </h2>
Tux Paint Funktioner och data </h2>
</header>
<p>
Rita med Tux tillhandahåller ett antal hjälpfunktioner som plugins kan komma åt via strukturen<code>"magic_api</code>", som skickas till alla plugins funktioner. (Se<a href="#toolfuncs">"Obligatoriska plugin-funktioner</a>" ovan.) </p>
Rita med Tux tillhandahåller ett antal hjälpfunktioner som tillägg kan komma åt via strukturen<code>"magic_api</code>", som skickas till alla plugins funktioner. (Se<a href="#toolfuncs">"Obligatoriska plugin-funktioner</a>" ovan.) </p>
<section class="indent"><!-- H3: Pixel Manipulations -->
<header>
@ -573,14 +573,14 @@
<p>
Denna funktion beräknar alla punkter på en linje mellan koordinaterna (x1,y1) och (x2,y2). Varje 'steg'-iteration anropar den funktionen 'callback'. </p>
<p>
Den skickar (x,y)-koordinaterna på linjen till "callback"-funktionen, Rita med Tuxs<code>"magic_api</code>"-struktur (som en<code>"void *</code>"-pekare som du måste skicka till den), ett "which"-värde som representerar vilket av plugin-programmets "Magic"-verktyg som används, och de aktuella och snapshot-bilderna. </p>
Den skickar (x,y)-koordinaterna på linjen till "callback"-funktionen, Rita med Tuxs<code>"magic_api</code>"-struktur (som en<code>"void *</code>"-pekare som du måste skicka till den), ett "which"-värde som representerar vilket av tilläggsprogrammets "Magi"-verktyg som används, och de aktuella och snapshot-bilderna. </p>
<p>
Exempel på prototyp av en callback-funktion som kan skickas till Rita med Tux's<code>"line()</code>" 'Magic' tool plugin helper-funktion: <blockquote><code>
Exempel på prototyp av en callback-funktion som kan skickas till Rita med Tux "<code>line()</code>" 'Magic' tool plugin helper-funktion: <blockquote><code>
void exampleCallBack(void * ptr_to_api, int which_tool, SDL_Surface * canvas, SDL_Surface * snapshot, int x, int y);
</code></blockquote>
</p>
<p>
Exempel på användning av<code>"line()</code>"-hjälpen (t.ex. inom ett plugins <code>draw()</code> -funktion): <blockquote><code>
Exempel på användning av<code>"line()</code>"-hjälpen (t.ex. inom ett tilläggs <code>draw()</code> -funktion): <blockquote><code>
api-&gt;line((void *) api, which, canvas, snapshot, ox, oy, x, y, 1, exampleCallBack);
</code></blockquote>
</p>
@ -627,11 +627,11 @@
<p>
Denna sträng innehåller den katalog där Rita med Tuxs datafiler lagras. På Linux kan detta till exempel vara<code>"/usr/share/tuxpaint/</code>". </p>
<p>
Magiska verktyg bör innehålla en ikon (se<code>"get_icon(</code>)", ovan) och uppmuntras att innehålla ljudeffekter, det är användbart för plugins att veta var sådana saker finns. </p>
Magiska verktyg bör innehålla en ikon (se<code>"get_icon(</code>)", ovan) och uppmuntras att innehålla ljudeffekter, det är användbart för tillägg att veta var sådana saker finns. </p>
<p>
Vid kompilering och installation av ett insticksprogram bör kommandoradsverktyget<code>"tp-magic-config</code>" användas för att avgöra var sådana data ska placeras för att den installerade versionen av Rita med Tux ska hitta dem. (Se<a href="#installing">"Installera</a>" nedan.) </p>
<p>
<b>Obs:</b> Om ditt plugin är installerat lokalt (<code>t.</code>ex. i din katalog<code>"~/.tuxpaint/plugins/</code>"), snarare än globalt (systemövergripande), kommer värdet<code>"data_directory</code>" att vara annorlunda. (<code>t.ex. "<i>/home/användarnamn/</i>.tuxpaint/plugins/data/</code>"). <p>
<b>Obs:</b> Om ditt tillägg är installerat lokalt (<code>t.</code>ex. i din katalog<code>"~/.tuxpaint/plugins/</code>"), snarare än globalt (systemövergripande), kommer värdet<code>"data_directory</code>" att vara annorlunda. (<code>t.ex. "<i>/home/användarnamn/</i>.tuxpaint/plugins/data/</code>"). <p>
</dd>
</dl>
</section><!-- H3: Informational -->
@ -639,7 +639,7 @@
<section class="indent"><!-- H3: Sound Functions -->
<header>
<h3 id="sound">
Sound Functions </h3>
Ljudfunktioner </h3>
</header>
<dl>
@ -688,7 +688,7 @@
<section class="indent"><!-- H3: Tux Paint System Calls -->
<header>
<h3 id="syscalls">
Tux Paint System Calls </h3>
Systemanrop för Tux Paint </h3>
</header>
<dl>
@ -789,7 +789,7 @@
<section class="indent"><!-- H2: Constant Definitions in tp_magic_api.h -->
<header>
<h2 id="consts">
Constant Definitions in "<code>tp_magic_api.h</code>" </h2>
Konstantdefinitioner i "<code>tp_magic_api.h</code>" </h2>
</header>
<p>
@ -801,9 +801,9 @@
<p>
Detta heltalsvärde representerar vilken version av Rita med Tux 'Magic' tool API som rubriken motsvarar. </p>
<p>
Det bör refereras till av ditt magiska verktygs<code>"api_version()"</code>-funktion, för att informera den löpande kopian av Rita med Tux om ditt plugin är kompatibelt eller inte. </p>
Det bör refereras till av ditt magiska verktygs<code>"api_version()"</code>-funktion, för att informera den löpande kopian av Rita med Tux om ditt tillägg är kompatibelt eller inte. </p>
<p>
<b>Obs:</b> Detta versionsnummer motsvarar inte Rita med Tux's eget versionsnummer (t.ex. "0.9.36"). API:et kommer inte att ändras varje gång en ny version av Rita med Tux släpps, vilket innebär att plugins som kompilerats för tidigare versioner av Rita med Tux ofta kommer att köras under nyare versioner. </p>
<b>Obs:</b> Detta versionsnummer motsvarar inte Rita med Tux's eget versionsnummer (t.ex. "0.9.36"). API:et kommer inte att ändras varje gång en ny version av Rita med Tux släpps, vilket innebär att tillägg som kompilerats för tidigare versioner av Rita med Tux ofta kommer att köras under nyare versioner. </p>
</dd>
<dt>
@ -820,24 +820,24 @@
<section class="outer"><!-- H1: Compiling -->
<header>
<h1 id="compiling">
Compiling </h1>
Kompilering </h1>
</header>
<section class="indent"><!-- H2: Linux and other Unix-like Platforms -->
<header>
<h2 id="compiling-linux">
Linux and other Unix-like Platforms </h2>
Linux och andra Unix-liknande plattformar </h2>
</header>
<p>
Använd C-kompilatorns kommandoradsalternativ<code>"-shared</code>" för att generera en fil med delade objekt ("<code>.so</code>") baserat på C-källkoden för ditt verktygsplugin 'Magic'. </p>
Använd C-kompilatorns kommandoradsalternativ<code>"-shared</code>" för att generera en fil med delade objekt ("<code>.so</code>") baserat på C-källkoden för ditt verktygstillägget 'Magi'. </p>
<p>
Använd kommandot<code>"tp-magic-config --cflags</code>", som levereras som en del av Rita med Tux - eller i vissa fall som en del av ett "Rita med Tux 'Magic' Tool Plugin Development package" - för att tillhandahålla ytterligare kommandoradsflaggor till din C-kompilator som hjälper den att bygga ditt plugin. </p>
<section class="indent"><!-- H3: Command-Line Example -->
<header>
<h3>
Command-Line Example </h3>
Exempel på kommandoraden </h3>
</header>
<p>
@ -885,7 +885,7 @@
<section class="indent"><!-- H3: Advanced Makefile -->
<header>
<h3>
Advanced Makefile </h3>
Avancerad Makefile </h3>
</header>
<p>
@ -931,13 +931,13 @@
<section class="outer"><!-- H1: Installing -->
<header>
<h1 id="installing">
Installing </h1>
Installering </h1>
</header>
<section class="indent"><!-- H2: Linux and other Unix-like Platforms -->
<header>
<h2 id="installing-linux">
Linux and other Unix-like Platforms </h2>
Linux och andra Unix-liknande plattformar </h2>
</header>
<p>
@ -970,7 +970,7 @@
<section class="indent"><!-- H3: Documentation -->
<header>
<h3>
Documentation </h3>
Dokumentation </h3>
</header>
<p>
@ -1064,13 +1064,13 @@
Under det finns ett<code>"install</code>"-mål i Makefile. (Påkallas av till exempel<code>"$ sudo make install</code>" eller<code>"# make install</code>") </p>
<p>
Målet<code>"install</code>" använder<code>"mkdir -p</code>" för att se till att plugin-katalogen finns, använder sedan<code>"cp</code>" för att kopiera alla plugin ("<code>.so</code>")-filer till den och anropar<code>"chmod</code>" för att se till att de är läsbara. </p>
Målet<code>"install</code>" använder<code>"mkdir -p</code>" för att se till att tilläggskatalogen finns, använder sedan "<code>cp</code>" för att kopiera alla plugin ("<code>.so</code>")-filer till den och anropar<code>"chmod</code>" för att se till att de är läsbara. </p>
<p>
Därefter utförs en liknande serie kommandon för att installera ikonfiler ("<code>.png</code>"-bilder) och ljudeffekter ("<code>.ogg</code>"-filer) i underkataloger i Rita med Tuxs datakatalog och för att installera dokumentation ("<code>.html</code>"- och "<code>.txt</code>"-filer) i Rita med Tuxs dokumentationskatalog. </p>
<p>
<b>Obs:</b> Makefile-exemplet ovan förutsätter att användaren har behörighet att installera Rita med Tux-plugins i hela systemet. </p>
<b>Obs:</b> Makefile-exemplet ovan förutsätter att användaren har behörighet att installera Rita med Tux-tillägg i hela systemet. </p>
</section><!-- H3: Putting it Together in a Makefile -->
</section><!-- H2: Linux and other Unix-like Platforms -->
@ -1097,14 +1097,14 @@
<section class="outer"><!-- H1: Creating plugins with multiple effects -->
<header>
<h1 id="multiple">
Skapa plugins med flera effekter </h1>
Skapa tillägg med flera effekter </h1>
</header>
<p>
Plugins för Rita med Tux kan innehålla mer än en effekt. Om du har flera effekter som liknar varandra kan det vara vettigt att placera dem i en plugin-fil för att minska overhead och dela kod. </p>
Tillägg för Rita med Tux kan innehålla mer än en effekt. Om du har flera effekter som liknar varandra kan det vara vettigt att placera dem i en tilläggsfil för att minska overhead och dela kod. </p>
<p>
Följande förslag kan hjälpa dig att skapa plugins som innehåller flera effekter:
Följande förslag kan hjälpa dig att skapa tillägg som innehåller flera effekter:
<ul>
<li>
Använd C<code>"enum</code>" för att räkna upp effekterna och räkna dem. <blockquote><code>
@ -1121,9 +1121,9 @@
<li>
Skapa arrayer av längden<code>"NUM_TOOLS</code>" för att innehålla effektspecifika data. <blockquote><code>
char * my_plugin_snd_filnamn[NUM_TOOLS] = {<br>
char * my_plugin_snd_filenames[NUM_TOOLS] = {<br>
&nbsp;&nbsp;&nbsp;&nbsp;"one.ogg", "another.ogg", "yet_another.ogg" };<br>
Mix_Chunk * min_plugin_snds[NUM_TOOLS]");
Mix_Chunk * my_plugin_snds[NUM_TOOLS]");
</code></blockquote>
</li>
@ -1134,12 +1134,12 @@
<br>
for (i = 0; i &lt; NUM_TOOLS; i++)<br>
{<br>
&nbsp;&nbsp;&nbsp;&nbsp;/* Becomes, for example, "/usr/share/tuxpaint/sounds/magic/one.ogg" */<br>
&nbsp;&nbsp;&nbsp;&nbsp;/* Blir till exempel "/usr/share/tuxpaint/sounds/magic/one.ogg" */<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;snprintf(fname, sizeof(fname), "%s/sounds/magic/%<!-- -->s",<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;api-&gt;data_prefix, my_plugin_snd_filnamn[i]);<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;api-&gt;data_prefix, my_plugin_snd_filenames[i]);<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;min_plugin_snds[i] = Mix_LoadWAV(fname);<br>
&nbsp;&nbsp;&nbsp;&nbsp;my_plugin_snds[i] = Mix_LoadWAV(fname);<br>
}
</code></blockquote>
</li>
@ -1149,7 +1149,7 @@
&nbsp;&nbsp;&nbsp;&nbsp;int i;<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;for (i = 0; i &lt; NUM_TOOLS; i++)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Mix_FreeChunk(min_plugin_snds[i]);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Mix_FreeChunk(my_plugin_snds[i]);
</code></blockquote>
</li>
@ -1159,7 +1159,7 @@
</p>
<p>
<b>Observera:</b> Även om ditt plugin för närvarande bara innehåller en effekt, kan det vara bra att följa stegen ovan så att du kan lägga till en ny variant av en effekt med liten ansträngning. ("<code>NUM_TOOLS</code>" kommer helt enkelt att vara '1', dina arrayer kommer att ha längden '1', etc.) </p>
<b>Observera:</b> Även om ditt tillägg för närvarande bara innehåller en effekt, kan det vara bra att följa stegen ovan så att du kan lägga till en ny variant av en effekt med liten ansträngning. ("<code>NUM_TOOLS</code>" kommer helt enkelt att vara '1', dina arrayer kommer att ha längden '1', etc.) </p>
</section><!-- H1: Creating plugins with multiple effects -->
@ -1167,7 +1167,7 @@
<section class="outer"><!-- H1: Example Code -->
<header>
<h1 id="examples">
Example Code </h1>
Exempelkod </h1>
</header>
<p>
@ -1203,7 +1203,7 @@
Se "ampersand" </dd>
<dt><code>*</code></dt>
<dd>
Se "star" </dd>
Se "stjärna" </dd>
<dt><code>-&gt;</code></dt>
<dd>
Se "pil" </dd>
@ -1212,7 +1212,7 @@
Se "punkt" </dd>
<dt><code>`</code></dt>
<dd>
Se "grave" </dd>
Se "grav" </dd>
<dt>alfa</dt>
<dd>
Se "RGBA" </dd>
@ -1223,7 +1223,7 @@ Se även: "bit" </dd>
<dt>ampersand (pekare)</dt>
<dd>
<code>"&amp;"</code>. En symbol i C som gör det möjligt att referera till minnesadressen för en variabel, dvs. en pekare. (Tänk till exempel på<code>"int i;</code>". Senare hänvisar<code>"&amp;i</code>" till minnet där "<code>i</code>" är lagrat, inte värdet på "<code>i</code>" i sig; det är en "pekare till<code>"i</code>"") <br/>
Se även: "star" </dd>
Se även: "stjärna" </dd>
<dt>API</dt>
<dd>
Gränssnitt för applikationsprogrammering. <i>Definitionen har ännu inte presenterats.</i> </dd>
@ -1232,7 +1232,7 @@ Se även: "star" </dd>
Ett värde som skickas till en funktion. </dd>
<dt>backquote / backtick</dt>
<dd>
Se "grave" </dd>
Se "grav" </dd>
<dt>BASH</dt>
<dd>
"Bourne Again Shell", ett skal- och kommandospråk för Unix. </dd>
@ -1264,13 +1264,6 @@ Se även: "Prototyp för C-funktion" </dd>
<dt>C-uppräkning</dt>
<dd>
En konstruktion i C som gör det möjligt att märka numeriska värden (som vanligtvis börjar på 0 och ökar med ett). (t.ex.<code>"enum { ONE, TWO, THREE };</code>" </dd>
<dt>colorspace</dt>
<dd>
<i>Definitionen har ännu inte presenterats.</i> <br/>
See also:
<ul>
<li>RGBA</li><li>HSV</li></ul>
</dd>
<dt><code>#define</code></dt>
<dd>
En C-sats som definierar en substitution som kan förekomma senare i koden. Används vanligen för konstanta värden (t.ex. "<code>#define RADIUS 16</code>"; alla förekomster av<code>"RADIUS</code>" ersätts med<code>"16</code>"), men kan också användas för att skapa makron. Placeras vanligtvis i C-headerfiler. </dd>
@ -1286,14 +1279,14 @@ See also:
<dt>dra</dt>
<dd>
Att flytta en mus medan knappen hålls intryckt, eller att flytta ett finger eller en penna över en skärm eller surfplatta utan att ta bort den. <br/>
See also:
Se även:
<ul>
<li>klick</li><li>utgåva</li></ul>
</dd>
<dt>element</dt>
<dd>
En variabel som lagras inom en C-struktur. (Exempel: elementen<code>"w</code>" och<code>"h</code>" i SDL_Surface lagrar ytans bredd respektive höjd) <br/>
See also:
Se även:
<ul>
<li>C-struktur</li><li>punkt</li><li>pil</li></ul>
</dd>
@ -1302,8 +1295,8 @@ See also:
Se "C-uppräkning" </dd>
<dt><code>float</code></dt>
<dd>
Se "floating point" </dd>
<dt>floating point</dt>
Se "flyttal" </dd>
<dt>flyttal</dt>
<dd>
<i>Definitionen har ännu inte presenterats.</i> <br/>
Se även: "heltal" </dd>
@ -1313,9 +1306,16 @@ Se även: "heltal" </dd>
<dt><code>free()</code></dt>
<dd>
En C-funktion som frigör (deallokerar) minne som allokerats av andra C-funktioner (t.ex. "<code>strdup(</code>)").<br/>Se manuskriptet "<code>malloc(3)</code>" <i>man page</i>. </dd>
<dt>function</dt>
<dt>funktion</dt>
<dd>
Se "C-funktion" </dd>
<dt>färgrymd</dt>
<dd>
<i>Definitionen har ännu inte presenterats.</i> <br/>
Se även:
<ul>
<li>RGBA</li><li>HSV</li></ul>
</dd>
<dt><code>gcc</code></dt>
<dd>
Se "GNU C-kompilator" </dd>
@ -1326,7 +1326,7 @@ Se även: "Krita" </dd>
<dt>GNU C-kompilator</dt>
<dd>
GNU C-kompilatorn, ett portabelt Open Source-paket för kompilering och länkning av program skrivna i programspråket C.<br/>Se manuskriptet "<code>gcc(1)</code>" <i>man page</i>. </dd>
<dt>grave</dt>
<dt>grav</dt>
<dd>
Den "<code><font size=+1>`</font></code>"; används av BASH-skalet för att använda utdata från ett kommando som kommandoradsargument för ett annat. </dd>
<dt>grön</dt>
@ -1338,13 +1338,13 @@ Se även: "Krita" </dd>
<dt>heltal</dt>
<dd>
<i>Definitionen har ännu inte presenterats.</i> <br/>
Se även: "floating point" </dd>
Se även: "flyttal" </dd>
<dt>HSV</dt>
<dd>
Färgton, mättnad och värde.<i>Definitionen har ännu inte presenterats.</i> <br/>
See also:
Se även:
<ul>
<li>RGBA</li><li>colorspace</li></ul>
<li>RGBA</li><li>färgrymd</li></ul>
</dd>
<dt>huvudfil</dt>
<dd>
@ -1367,7 +1367,7 @@ See also:
<dt>klick</dt>
<dd>
Att trycka på en knapp på en mus, trycka på en pekskärm eller trycka en penna mot en surfplatta. <br/>
See also:
Se även:
<ul>
<li>dra</li><li>utgåva</li></ul>
</dd>
@ -1384,12 +1384,12 @@ Se även: "GIMP" </dd>
<dt>linjär</dt>
<dd>
<i>Definitionen har ännu inte presenterats.</i> </dd>
<dt>Magic tool</dt>
<dd>
En av ett antal effekter eller ritverktyg i Rita med Tux, som görs tillgängliga via verktygsknappen "Magic". </dd>
<dt><code>magic_api</code></dt>
<dd>
En C-struktur som skickas vidare till ett plugins funktioner som exponerar data och funktioner i den löpande kopian av Rita med Tux. </dd>
En C-struktur som skickas vidare till ett tilläggs funktioner som exponerar data och funktioner i den löpande kopian av Rita med Tux. </dd>
<dt>Magiverktyg</dt>
<dd>
En av ett antal effekter eller ritverktyg i Rita med Tux, som görs tillgängliga via verktygsknappen "Magic". </dd>
<dt><code>make</code></dt>
<dd>
Ett verktyg som automatiskt avgör vilka delar av ett större program som behöver kompileras om och ger kommandon för att kompilera om dem. <br/>
@ -1409,7 +1409,10 @@ Se även: "Makefile" </dd>
<dt><code>Mix_LoadWAV()</code></dt>
<dd>
En SDL_mixer-funktion som laddar en ljudfil (WAV, Ogg Vorbis, etc.) och returnerar den som en<code>"Mix_Chunk *</code>". </dd>
<dt>namespace</dt>
<dt>mättnad</dt>
<dd>
Se "HSV" </dd>
<dt>namnrymd</dt>
<dd>
<i>Definitionen har ännu inte presenterats.</i> </dd>
<dt>nyans</dt>
@ -1425,19 +1428,22 @@ Se även: "WAVE" </dd>
<dt>osignerad</dt>
<dd>
I C kan en variabel som kan lagra ett numeriskt värde deklareras som antingen "signerad" (standard) eller "osignerad". I det förra fallet används en bit av värdet för att ange värdets tecken (antingen positivt eller negativt). I det senare fallet kan värdet bara vara positivt, men det finns en extra lagringsbit för talet. En signerad byte (8 bitar) kan t.ex. representera vilket tal som helst mellan -128 och 127. En osignerad byte kan gå upp till 255, men den kan inte gå under 0. För grafik i SDL bör osignerade värden användas för RGB-värden, eftersom varje kanal (röd, grön och blå) kan vara mellan 0 (släckt) och 255 (ljusast). <br/>
See also:
Se även:
<ul>
<li>Uint8</li><li>Uint32</li><li>integer</li></ul>
</dd>
<dt>peka</dt>
<dd>
Se "klick" </dd>
<dt>pekare</dt>
<dd>
Se "C-pekare" </dd>
<dt>pil</dt>
<dd>
<code>"-&gt;"</code>. En symbol i C som refererar till ett element inom en pekare till en struktur. </dd>
<dt><code>.png</code></dt>
<dd>
Se "Portable Network Graphics" </dd>
<dt>pointer</dt>
<dd>
Se "C-pekare" </dd>
<dt>Portable Network Graphics</dt>
<dd>
Portable Network Graphics. Ett utbyggbart filformat för förlustfri, portabel och välkomprimerad lagring av rasterbilder. Det är det filformat som Rita med Tux använder för att spara bilder och för sina penslar och stämplar. Det är ett enkelt sätt att lagra 32bpp RGBA-bilder (24bpp äkta färg med full 8bpp alfa-genomskinlighet), utmärkt för användning i grafikprogram som Rita med Tux.<br/>Se manuskriptet "<code>png(5)</code>" <i>man page</i>. <br/>
@ -1452,7 +1458,7 @@ Se även: "C-funktion" </dd>
<dt>punkt</dt>
<dd>
"<code>.</code>". En symbol i C som refererar till ett element inom en struktur. <br/>
See also:
Se även:
<ul>
<li>C-struktur</li><li>pil</li></ul>
</dd>
@ -1462,16 +1468,13 @@ See also:
<dt>RGBA</dt>
<dd>
Röd, grön, blå och alfa.<i>Definitionen har ännu inte presenterats.</i> <br/>
See also:
Se även:
<ul>
<li>HSV</li><li>colorspace</li></ul>
<li>HSV</li><li>färgrymd</li></ul>
</dd>
<dt>röd</dt>
<dd>
Se "RGBA" </dd>
<dt>saturation</dt>
<dd>
Se "HSV" </dd>
<dt>SDL</dt>
<dd>
Se "Simple DirectMedia Layer" </dd>
@ -1481,7 +1484,7 @@ See also:
<dt><code>SDL_GetRGB()</code></dt>
<dd>
En libSDL-funktion som, med tanke på ett <code>Uint32-pixelvärde</code> (t.ex. ett som returneras från Rita med Tux's Magic tool API-hjälpfunktionen "getpixel<code>()</code>"), formatet på ytan som pixeln togs från och pekare till tre <code>Uint8-variabler</code>, placerar pixelns RGB-värden (rött, grönt och blått) i de tre <code>Uint8-variablerna</code>. (Exempel:<code>"SDL_GetRGB(getpixel(surf, x, y), surf-&gt;format, &amp;r, &amp;g, &amp;b);</code>"<br/>Se manuskriptet "<code>SDL_GetRGB(3)</code>" <i>man page</i>. <br/>
See also:
Se även:
<ul>
<li>SDL_MapRGB()</li><li>RGBA</li></ul>
</dd>
@ -1491,7 +1494,7 @@ See also:
<dt><code>SDL_MapRGB()</code></dt>
<dd>
En libSDL-funktion som, givet formatet på en yta och <code>Uint8-värden</code> som representerar röda, gröna och blå värden för en pixel, returnerar ett <code>Uint32-pixelvärde</code> som kan placeras i ytan (t.ex. med hjälp av Rita med Tux's Magic tool API-hjälpfunktion<code>"putpixel()")</code>. (Exempel:<code>"putpixel(surf, x, y, SDL_MapRGB(surf-&gt;format, r, g, b));</code>".)<br/>Se manuskriptet "<code>SDL_MapRGB(3)</code>" <i>man page</i>. <br/>
See also:
Se även:
<ul>
<li>SDL_GetRGB()</li><li>RGBA</li></ul>
</dd>
@ -1522,7 +1525,7 @@ See also:
<dt>sRGB</dt>
<dd>
Se "RGBA" </dd>
<dt>star</dt>
<dt>stjärna</dt>
<dd>
<code>"*</code>". En symbol i C som, när den används i deklarationen av variabler (t.ex. argument till en funktion), anger att variabeln är en pekare. (Till exempel<code>"int * p;</code>" betyder att<code>"p</code>" är en <i>pekare</i> till ett heltal.) När den används bredvid en pekare "dereferencerar" den variabeln. (Till exempel, senare<code>"*p = 50;</code>" tilldelar värdet 50 till det minne som "<code>p</code>" pekar på; det ändrar inte värdet på "<code>p</code>", som fortfarande är en pekare på ett heltal. I själva verket ändras det heltal som pekas ut) <br/>
Se även: "ampersand" </dd>
@ -1532,37 +1535,34 @@ Se även: "ampersand" </dd>
<dt><code>struct</code></dt>
<dd>
Se "C-struktur" </dd>
<dt>tap</dt>
<dd>
Se "klick" </dd>
<dt><code>tp-magic-config</code></dt>
<dd>
Ett kommandoradsprogram som ger information om den installerade versionen av Rita med Tux till plugin-utvecklare (t.ex. vilka C-kompilatorflaggor de ska kompilera med och var plugin-delade objekt och datafiler ska installeras).<br/>Se manuskriptet "<code>tp-magic-config(3)</code>" <i>man page</i>. </dd>
Ett kommandoradsprogram som ger information om den installerade versionen av Rita med Tux till tilläggsutvecklare (t.ex. vilka C-kompilatorflaggor de ska kompilera med och var plugin-delade objekt och datafiler ska installeras).<br/>Se manuskriptet "<code>tp-magic-config(3)</code>" <i>man page</i>. </dd>
<dt><code>tp_magic_api.h</code></dt>
<dd>
En header-fil som definierar Rita med Tuxs API för magiska verktyg. Plugins måste<code>'#inkludera</code>' den. </dd>
En header-fil som definierar Rita med Tuxs API för magiska verktyg. Tillägg måste '<code>#include</code>' den. </dd>
<dt><code>Uint32</code></dt>
<dd>
Ett 32-bitars, osignerat heltal (definierat av libSDL). Med andra ord, fyra byte som kan representera 0 till 4 294 967 295. (Används vanligtvis för att hålla tillräckligt med information för att lagra tre eller fyra byte som representerar en pixels färg; dvs. RBGA-värde). <br/>
See also:
Se även:
<ul>
<li>Uint8</li><li>integer</li><li>unsigned</li></ul>
</dd>
<dt><code>Uint8</code></dt>
<dd>
Ett 8-bitars, osignerat heltal (definierat av libSDL). Med andra ord, en byte som kan representera 0 till 255. <br/>
See also:
Se även:
<ul>
<li>Uint32</li><li>integer</li><li>unsigned</li></ul>
</dd>
<dt>utgåva</dt>
<dd>
Att släppa en musknapp eller att ta bort ett finger eller en pekpenna från en skärm eller surfplatta. <br/>
See also:
Se även:
<ul>
<li>klick</li><li>dra</li></ul>
</dd>
<dt>variable</dt>
<dt>variabel</dt>
<dd>
En konstruktion i datorprogrammering som innehåller ett värde som kan refereras till igen senare genom att hänvisa till variabelns namn, och vanligtvis ändras senare. Till exempel kan en variabel som innehåller någons ålder deklareras som ett heltal:<code>"int age</code>;". Den kan undersökas senare - t.ex.<code>"if (age &gt;= 18) { /* they are an adult */ } else { /* they are not an adult */ } }</code>" - och även ändras senare - t.ex. <code>age = 32; /* set age to 32 */</code> </dd>
<dt>värde</dt>

View file

@ -1847,7 +1847,7 @@
Detaljerade instruktioner om kommandorads- och konfigurationsfilsalternativ, för dem som inte vill använda verktyget Konfigurera Rita med Tux för att hantera Rita med Tuxs konfiguration. </li>
<li>
<a href="../magic-docs/html/index.html">dokumentation av "Magic"-verktyget ("<code>magic-docs</code>")</a><br>
<a href="../magic-docs/html/index.html">Dokumentation för "Magi"-verktyget ("<code>magic-docs</code>")</a><br>
Dokumentation för vart och ett av de för närvarande installerade "Magic"-verktygen. </li>
<li>

View file

@ -1,6 +1,6 @@
/* tp_magic_example.c
Ett exempel ett "Magic"-verktygsplugin för Rita med Tux
Ett exempel ett "Magi"-verktygstillägg för Rita med Tux
maj 10, 2024
*/
@ -12,7 +12,7 @@
#include <string.h> // För "strdup()"
#include <libintl.h> // För "gettext()"
#include "tp_magic_api.h" // Tux Paint "Magic" tool API header
#include "tp_magic_api.h" // Tux Paint "Magic" verktyg API-huvud
#include "SDL_image.h" // För IMG_Load(), för att ladda vår PNG-ikon
#include "SDL_mixer.h" // För Mix_LoadWAV(), för att ladda våra ljudeffekter
@ -55,8 +55,8 @@ andra språk.
/* En lista med namn för verktygen */
const char *verktygsnamn[NUM_TOOLS] = {
gettext_noop("A tool"),
gettext_noop("Another tool")
gettext_noop("Ett verktyg"),
gettext_noop("Ett annat verktyg")
};
@ -77,10 +77,10 @@ const char *tool_descriptions[NUM_TOOLS] = {
/* Our global variables: */
/* Våra globala variabler: */
/* ---------------------------------------------------------------------- */
/* Sound effects: */
/* Ljudeffekter: */
Mix_Chunk *sound_effects[NUM_TOOLS];
/* Den aktuella färgen (ett "RGB"-värde (röd, grön, blå) som användaren
@ -95,17 +95,17 @@ Uint8 example_storlek;
/* ---------------------------------------------------------------------- */
/*
Dessa funktioner anropas av andra funktioner inom vårt plugin, vi
Dessa funktioner anropas av andra funktioner inom vårt tillägg, vi
tillhandahåller en "prototyp" av dem, att kompilatorn vet vad de
accepterar och returnerar. Detta gör att vi kan använda dem i andra
funktioner som deklareras _före_ dem.
*/
void example_drag(magic_api * api, int som, SDL_Surface * canvas,
void example_drag(magic_api * api, int som, SDL_Surface * malarduk,
SDL_Surface * ogonblicksbild, int gammal_x, int gammal_y,
int x, int y, SDL_Rect * uppdatering_rect);
void example_line_callback(void *pointer, int som, SDL_Surface * canvas,
void example_line_callback(void *pekare, int som, SDL_Surface * malarduk,
SDL_Surface * ogonblicksbild, int x, int y);
@ -116,8 +116,8 @@ void example_line_callback(void *pointer, int som, SDL_Surface * canvas,
Kontroll av API-version
Den löpande kopian av Rita med Tux som har laddat oss frågar oss först
vilken version av Rita med Tux 'Magic' tool plugin API vi byggdes mot. Om
det anser att vi är kompatibla kommer vi att användas!
vilken version av Rita med Tux 'Magi' verktygstilläggs-API vi byggdes mot.
Om det anser att vi är kompatibla kommer vi att användas!
Allt vi behöver göra här är att returnera "TP_MAGIC_API_VERSION", som
definieras (#define) i headerfilen "tp_magic_api.h".
@ -132,7 +132,7 @@ Uint32 example_api_version(void)
/*
Initiering av Samhain
Detta händer en gång, när Rita med Tux startar och laddar alla plugins
Detta händer en gång, när Rita med Tux startar och laddar alla tillägg
för "Magic"-verktyget. (Förutsatt att det vi fick tillbaka från
api_version var acceptabelt!)
@ -159,7 +159,7 @@ int example_init(magic_api *api, Uint8 inaktiverade_funktioner,
Använd "api->data_directory" för att ta reda var våra ljud ska vara.
(Kommandot "tp-magic-config --dataprefix" skulle ha berättat för oss när
vi installerade vårt plugin och dess data)
vi installerade vårt tillägg och dess data)
*/
snprintf(filnamn, sizeof(filnamn), "%ssounds/magic/%s",
api->data_directory, ljud_filnamn[i]);
@ -195,8 +195,8 @@ int example_get_tool_count(magic_api *api)
/*
Ladda våra ikoner
När Rita med Tux startar upp och laddar in plugins ber den oss att
tillhandahålla ikoner för verktygsknapparna "Magic".
När Rita med Tux startar upp och laddar in tillägg ber den oss att
tillhandahålla ikoner för verktygsknapparna "Magi".
*/
SDL_Surface *example_get_icon(magic_api *api, int som)
{
@ -208,7 +208,7 @@ SDL_Surface *example_get_icon(magic_api *api, int som)
Använd "api->data_directory" för att räkna ut var våra ljud ska vara.
(Kommandot "tp-magic-config --dataprefix" skulle ha berättat för oss när
vi installerade vårt plugin och dess data)
vi installerade vårt tillägg och dess data)
Vi använder "som" (vilket av våra verktyg som Rita med Tux frågar om)
som ett index i matrisen.
@ -227,7 +227,7 @@ SDL_Surface *example_get_icon(magic_api *api, int som)
/*
Rapportera våra namn "Magic"-verktyg
När Rita med Tux startar upp och laddar in plugins ber den oss att ange
När Rita med Tux startar upp och laddar in tillägg ber den oss att ange
namn (etiketter) för verktygsknapparna "Magic".
*/
char *example_get_name(magic_api *api, int som)
@ -265,7 +265,7 @@ char *example_get_name(magic_api *api, int som)
/*
Rapportera våra "magiska" verktygsgrupper
När Rita med Tux startar upp och laddar in plugins ber den oss att ange
När Rita med Tux startar upp och laddar in tillägg ber den oss att ange
var verktyget ska grupperas.
*/
int example_get_group(magic_api *api, int som)
@ -298,10 +298,10 @@ int *example_get_order(int som)
/*
Rapportera våra beskrivningar av "Magic"-verktyget
När Rita med Tux startar upp och laddar in plugins ber den oss att ge
beskrivningar av varje "Magic"-verktyg.
När Rita med Tux startar upp och laddar in tillägg ber den oss att ge
beskrivningar av varje "Magi"-verktyg.
*/
char *example_get_description(magic_api *api, int som, int lage)
char *example_get_description(magic_api *api, int som, int mode)
{
const char *var_desc_engelska;
const char *var_beskrivning_lokaliserad;
@ -361,7 +361,7 @@ int example_modes(magic_api *api, int som)
// Rapportera om verktygen erbjuder storleksalternativ
Uint8 example_accepted_sizes(magic_api *api, int som, int lage)
Uint8 example_accepted_sizes(magic_api *api, int som, int mode)
{
if (som == VERKTYG_ONE)
return 1;
@ -372,7 +372,7 @@ Uint8 example_accepted_sizes(magic_api *api, int som, int lage)
// Återgå till vårt standardstorleksalternativ
Uint8 example_default_size(magic_api *api, int som, int lage)
Uint8 example_default_size(magic_api *api, int som, int mode)
{
return 1;
}
@ -382,7 +382,7 @@ Uint8 example_default_size(magic_api *api, int som, int lage)
Stäng av
Rita med Tux håller att avslutas. När programmet avslutas ber det
alla plugins att "städa upp" efter sig själva. Vi laddade till exempel
alla tillägg att "städa upp" efter sig själva. Vi laddade till exempel
några ljudeffekter vid start (i vår funktion example_init()), vi bör
frigöra det minne som används av dem nu.
*/
@ -405,9 +405,9 @@ void example_shutdown(magic_api *api)
/* Påverkar duken vid klick: */
void
example_click(magic_api *api, int som, int lage,
SDL_Surface *canvas, SDL_Surface *ogonblicksbild, int x, int y,
SDL_Rect *uppdatering_rect)
example_click(magic_api *api, int som, int mode,
SDL_Surface *malarduk, SDL_Surface *ogonblicksbild, int x,
int y, SDL_Rect *uppdatering_rect)
{
/*
I vårt fall är ett enda klick (som också är början en dragning!)
@ -418,7 +418,7 @@ example_click(magic_api *api, int som, int lage,
med (x,y) för både start- och slutpunkterna för en linje.
*/
example_drag(api, som, canvas, ogonblicksbild, x, y, x, y,
example_drag(api, som, malarduk, ogonblicksbild, x, y, x, y,
uppdatering_rect);
}
@ -426,7 +426,7 @@ example_click(magic_api *api, int som, int lage,
/* Påverkar duken vid dragning: */
void
example_drag(magic_api *api, int som,
SDL_Surface *canvas, SDL_Surface *ogonblicksbild,
SDL_Surface *malarduk, SDL_Surface *ogonblicksbild,
int gammal_x, int gammal_y, int x, int y,
SDL_Rect *uppdatering_rect)
{
@ -441,12 +441,12 @@ example_drag(magic_api *api, int som,
ögonblicksbildsdukarna).
*/
SDL_LockSurface(ogonblicksbild);
SDL_LockSurface(canvas);
SDL_LockSurface(malarduk);
api->line((void *) api, som, canvas, ogonblicksbild,
api->line((void *) api, som, malarduk, ogonblicksbild,
gammal_x, gammal_y, x, y, 1, example_line_callback);
SDL_UnlockSurface(canvas);
SDL_UnlockSurface(malarduk);
SDL_UnlockSurface(ogonblicksbild);
/*
@ -505,7 +505,7 @@ example_drag(magic_api *api, int som,
kommer att panorera från högtalare till högtalare när du drar musen
runt duken!)
*/
api->playsound(sound_effects[som], (x * 255) / canvas->w, /* Vänster/höger panorering */
api->playsound(sound_effects[som], (x * 255) / malarduk->w, /* Vänster/höger panorering */
255 /* Nära/långt avstånd (loudness) */ );
}
@ -514,7 +514,7 @@ example_drag(magic_api *api, int som,
void
example_release(magic_api *api, int som,
SDL_Surface *canvas, SDL_Surface *ogonblicksbild, int x,
SDL_Surface *malarduk, SDL_Surface *ogonblicksbild, int x,
int y, SDL_Rect *uppdatering_rect)
{
/*
@ -525,7 +525,7 @@ example_release(magic_api *api, int som,
/*
Accept colors
Acceptera färger
När något av våra "Magic"-verktyg aktiveras av användaren, om verktyget
accepterar färger, skickas det aktuella färgvalet till oss.
@ -536,7 +536,7 @@ Om något av våra färgaccepterande verktyg är aktivt när användaren
Färgen anges som RGB-värden (rött, grönt och blått) från 0 (mörkast)
till 255 (ljusast).
*/
void example_set_color(magic_api *api, int which, SDL_Surface *canvas,
void example_set_color(magic_api *api, int which, SDL_Surface *malarduk,
SDL_Surface *ogonblicksbild, Uint8 r, Uint8 g, Uint8 b,
SDL_Rect *uppdatering_rect)
{
@ -565,7 +565,7 @@ värde som returneras av vår example_accepted_sizes()-funktion under
installationen.
*/
void example_set_size(magic_api *api, int which, int mode,
SDL_Surface *canvas, SDL_Surface *ogonblicksbild,
SDL_Surface *malarduk, SDL_Surface *ogonblicksbild,
Uint8 storlek, SDL_Rect *uppdatering_rect)
{
/*
@ -583,18 +583,18 @@ void example_set_size(magic_api *api, int which, int mode,
/*
Vår "callback"-funktion
Vi gör "arbetet" i denna återuppringning. Vår plugin-fil har bara en.
Vissa plugins för "magiska" verktyg kan ha fler, beroende vilka
Vi gör "arbetet" i denna återuppringning. Vår tilläggsfil har bara en.
Vissa tillägg för "magiska" verktyg kan ha fler, beroende vilka
verktyg de tillhandahåller. Vissa har inga (eftersom de inte är
klick-och-drag-verktyg i målningsstil).
Vår callback-funktion anropas en gång för varje punkt längs en linje
mellan musens föregående och nuvarande position, när den dras.
Vår callback uppmärksammar 'som' för att avgöra vilket av pluginets
verktyg som för närvarande är valt.
Vår callback uppmärksammar 'som' för att avgöra vilket av
tilläggsverktyg som för närvarande är valt.
*/
void example_line_callback(void *pointer, int som, SDL_Surface *canvas,
void example_line_callback(void *pekare, int som, SDL_Surface *malarduk,
SDL_Surface *ogonblicksbild, int x, int y)
{
/*
@ -608,7 +608,7 @@ void example_line_callback(void *pointer, int som, SDL_Surface *canvas,
"(magic_api *)" nedan kastar den generiska "void *"-pekaren till den
"typ" av pekare vi vill ha, en pekare till en "magic_api"-struktur)
*/
magic_api *api = (magic_api *) pointer;
magic_api *api = (magic_api *) pekare;
int xx, yy;
/*
@ -624,8 +624,8 @@ void example_line_callback(void *pointer, int som, SDL_Surface *canvas,
fungerar som en 1x1 pixel-pensel.
*/
api->putpixel(canvas, x, y,
SDL_MapRGB(canvas->format,
api->putpixel(malarduk, x, y,
SDL_MapRGB(malarduk->format,
example_r, example_g, example_b));
/*
@ -647,7 +647,7 @@ void example_line_callback(void *pointer, int som, SDL_Surface *canvas,
{
for (xx = -example_storlek; xx < example_storlek; xx++)
{
api->putpixel(canvas, x + xx, y + yy,
api->putpixel(malarduk, x + xx, y + yy,
api->getpixel(ogonblicksbild,
ogonblicksbild->w - x - xx,
ogonblicksbild->h - y - yy));
@ -684,7 +684,8 @@ läget).
Vårt exempel gör ingenting när vi byter till, eller från, våra
Magic-verktyg, vi gör ingenting här.
*/
void example_switchin(magic_api *api, int som, int lage, SDL_Surface *canvas)
void example_switchin(magic_api *api, int som, int mode,
SDL_Surface *malarduk)
{
}
@ -707,6 +708,7 @@ anrop till 'example_switchin()', ovan, för det nya läget).
Vårt exempel gör ingenting när vi byter till, eller från, våra
Magic-verktyg, vi gör ingenting här.
*/
void example_switchout(magic_api *api, int som, int lage, SDL_Surface *canvas)
void example_switchout(magic_api *api, int som, int mode,
SDL_Surface *malarduk)
{
}

View file

@ -1,6 +1,6 @@
/* tp_magic_example.c
Ett exempel ett "Magic"-verktygsplugin för Rita med Tux
Ett exempel ett "Magi"-verktygstillägg för Rita med Tux
maj 10, 2024
*/
@ -12,7 +12,7 @@
#include <string.h> // För "strdup()"
#include <libintl.h> // För "gettext()"
#include "tp_magic_api.h" // Tux Paint "Magic" tool API header
#include "tp_magic_api.h" // Tux Paint "Magic" verktyg API-huvud
#include "SDL_image.h" // För IMG_Load(), för att ladda vår PNG-ikon
#include "SDL_mixer.h" // För Mix_LoadWAV(), för att ladda våra ljudeffekter
@ -55,8 +55,8 @@ andra språk.
/* En lista med namn för verktygen */
const char *verktygsnamn[NUM_TOOLS] = {
gettext_noop("A tool"),
gettext_noop("Another tool")
gettext_noop("Ett verktyg"),
gettext_noop("Ett annat verktyg")
};
@ -77,10 +77,10 @@ const char *tool_descriptions[NUM_TOOLS] = {
/* Our global variables: */
/* Våra globala variabler: */
/* ---------------------------------------------------------------------- */
/* Sound effects: */
/* Ljudeffekter: */
Mix_Chunk *sound_effects[NUM_TOOLS];
/* Den aktuella färgen (ett "RGB"-värde (röd, grön, blå) som användaren
@ -95,17 +95,17 @@ Uint8 example_storlek;
/* ---------------------------------------------------------------------- */
/*
Dessa funktioner anropas av andra funktioner inom vårt plugin, vi
Dessa funktioner anropas av andra funktioner inom vårt tillägg, vi
tillhandahåller en "prototyp" av dem, att kompilatorn vet vad de
accepterar och returnerar. Detta gör att vi kan använda dem i andra
funktioner som deklareras _före_ dem.
*/
void example_drag(magic_api * api, int som, SDL_Surface * canvas,
void example_drag(magic_api * api, int som, SDL_Surface * malarduk,
SDL_Surface * ogonblicksbild, int gammal_x, int gammal_y,
int x, int y, SDL_Rect * uppdatering_rect);
void example_line_callback(void *pointer, int som, SDL_Surface * canvas,
void example_line_callback(void *pekare, int som, SDL_Surface * malarduk,
SDL_Surface * ogonblicksbild, int x, int y);
@ -116,8 +116,8 @@ void example_line_callback(void *pointer, int som, SDL_Surface * canvas,
Kontroll av API-version
Den löpande kopian av Rita med Tux som har laddat oss frågar oss först
vilken version av Rita med Tux 'Magic' tool plugin API vi byggdes mot. Om
det anser att vi är kompatibla kommer vi att användas!
vilken version av Rita med Tux 'Magi' verktygstilläggs-API vi byggdes mot.
Om det anser att vi är kompatibla kommer vi att användas!
Allt vi behöver göra här är att returnera "TP_MAGIC_API_VERSION", som
definieras (#define) i headerfilen "tp_magic_api.h".
@ -132,7 +132,7 @@ Uint32 example_api_version(void)
/*
Initiering av Samhain
Detta händer en gång, när Rita med Tux startar och laddar alla plugins
Detta händer en gång, när Rita med Tux startar och laddar alla tillägg
för "Magic"-verktyget. (Förutsatt att det vi fick tillbaka från
api_version var acceptabelt!)
@ -159,7 +159,7 @@ int example_init(magic_api *api, Uint8 inaktiverade_funktioner,
Använd "api->data_directory" för att ta reda var våra ljud ska vara.
(Kommandot "tp-magic-config --dataprefix" skulle ha berättat för oss när
vi installerade vårt plugin och dess data)
vi installerade vårt tillägg och dess data)
*/
snprintf(filnamn, sizeof(filnamn), "%ssounds/magic/%s",
api->data_directory, ljud_filnamn[i]);
@ -195,8 +195,8 @@ int example_get_tool_count(magic_api *api)
/*
Ladda våra ikoner
När Rita med Tux startar upp och laddar in plugins ber den oss att
tillhandahålla ikoner för verktygsknapparna "Magic".
När Rita med Tux startar upp och laddar in tillägg ber den oss att
tillhandahålla ikoner för verktygsknapparna "Magi".
*/
SDL_Surface *example_get_icon(magic_api *api, int som)
{
@ -208,7 +208,7 @@ SDL_Surface *example_get_icon(magic_api *api, int som)
Använd "api->data_directory" för att räkna ut var våra ljud ska vara.
(Kommandot "tp-magic-config --dataprefix" skulle ha berättat för oss när
vi installerade vårt plugin och dess data)
vi installerade vårt tillägg och dess data)
Vi använder "som" (vilket av våra verktyg som Rita med Tux frågar om)
som ett index i matrisen.
@ -227,7 +227,7 @@ SDL_Surface *example_get_icon(magic_api *api, int som)
/*
Rapportera våra namn "Magic"-verktyg
När Rita med Tux startar upp och laddar in plugins ber den oss att ange
När Rita med Tux startar upp och laddar in tillägg ber den oss att ange
namn (etiketter) för verktygsknapparna "Magic".
*/
char *example_get_name(magic_api *api, int som)
@ -265,7 +265,7 @@ char *example_get_name(magic_api *api, int som)
/*
Rapportera våra "magiska" verktygsgrupper
När Rita med Tux startar upp och laddar in plugins ber den oss att ange
När Rita med Tux startar upp och laddar in tillägg ber den oss att ange
var verktyget ska grupperas.
*/
int example_get_group(magic_api *api, int som)
@ -298,10 +298,10 @@ int *example_get_order(int som)
/*
Rapportera våra beskrivningar av "Magic"-verktyget
När Rita med Tux startar upp och laddar in plugins ber den oss att ge
beskrivningar av varje "Magic"-verktyg.
När Rita med Tux startar upp och laddar in tillägg ber den oss att ge
beskrivningar av varje "Magi"-verktyg.
*/
char *example_get_description(magic_api *api, int som, int lage)
char *example_get_description(magic_api *api, int som, int mode)
{
const char *var_desc_engelska;
const char *var_beskrivning_lokaliserad;
@ -361,7 +361,7 @@ int example_modes(magic_api *api, int som)
// Rapportera om verktygen erbjuder storleksalternativ
Uint8 example_accepted_sizes(magic_api *api, int som, int lage)
Uint8 example_accepted_sizes(magic_api *api, int som, int mode)
{
if (som == VERKTYG_ONE)
return 1;
@ -372,7 +372,7 @@ Uint8 example_accepted_sizes(magic_api *api, int som, int lage)
// Återgå till vårt standardstorleksalternativ
Uint8 example_default_size(magic_api *api, int som, int lage)
Uint8 example_default_size(magic_api *api, int som, int mode)
{
return 1;
}
@ -382,7 +382,7 @@ Uint8 example_default_size(magic_api *api, int som, int lage)
Stäng av
Rita med Tux håller att avslutas. När programmet avslutas ber det
alla plugins att "städa upp" efter sig själva. Vi laddade till exempel
alla tillägg att "städa upp" efter sig själva. Vi laddade till exempel
några ljudeffekter vid start (i vår funktion example_init()), vi bör
frigöra det minne som används av dem nu.
*/
@ -405,9 +405,9 @@ void example_shutdown(magic_api *api)
/* Påverkar duken vid klick: */
void
example_click(magic_api *api, int som, int lage,
SDL_Surface *canvas, SDL_Surface *ogonblicksbild, int x, int y,
SDL_Rect *uppdatering_rect)
example_click(magic_api *api, int som, int mode,
SDL_Surface *malarduk, SDL_Surface *ogonblicksbild, int x,
int y, SDL_Rect *uppdatering_rect)
{
/*
I vårt fall är ett enda klick (som också är början en dragning!)
@ -418,7 +418,7 @@ example_click(magic_api *api, int som, int lage,
med (x,y) för både start- och slutpunkterna för en linje.
*/
example_drag(api, som, canvas, ogonblicksbild, x, y, x, y,
example_drag(api, som, malarduk, ogonblicksbild, x, y, x, y,
uppdatering_rect);
}
@ -426,7 +426,7 @@ example_click(magic_api *api, int som, int lage,
/* Påverkar duken vid dragning: */
void
example_drag(magic_api *api, int som,
SDL_Surface *canvas, SDL_Surface *ogonblicksbild,
SDL_Surface *malarduk, SDL_Surface *ogonblicksbild,
int gammal_x, int gammal_y, int x, int y,
SDL_Rect *uppdatering_rect)
{
@ -441,12 +441,12 @@ example_drag(magic_api *api, int som,
ögonblicksbildsdukarna).
*/
SDL_LockSurface(ogonblicksbild);
SDL_LockSurface(canvas);
SDL_LockSurface(malarduk);
api->line((void *) api, som, canvas, ogonblicksbild,
api->line((void *) api, som, malarduk, ogonblicksbild,
gammal_x, gammal_y, x, y, 1, example_line_callback);
SDL_UnlockSurface(canvas);
SDL_UnlockSurface(malarduk);
SDL_UnlockSurface(ogonblicksbild);
/*
@ -505,7 +505,7 @@ example_drag(magic_api *api, int som,
kommer att panorera från högtalare till högtalare när du drar musen
runt duken!)
*/
api->playsound(sound_effects[som], (x * 255) / canvas->w, /* Vänster/höger panorering */
api->playsound(sound_effects[som], (x * 255) / malarduk->w, /* Vänster/höger panorering */
255 /* Nära/långt avstånd (loudness) */ );
}
@ -514,7 +514,7 @@ example_drag(magic_api *api, int som,
void
example_release(magic_api *api, int som,
SDL_Surface *canvas, SDL_Surface *ogonblicksbild, int x,
SDL_Surface *malarduk, SDL_Surface *ogonblicksbild, int x,
int y, SDL_Rect *uppdatering_rect)
{
/*
@ -525,7 +525,7 @@ example_release(magic_api *api, int som,
/*
Accept colors
Acceptera färger
När något av våra "Magic"-verktyg aktiveras av användaren, om verktyget
accepterar färger, skickas det aktuella färgvalet till oss.
@ -536,7 +536,7 @@ Om något av våra färgaccepterande verktyg är aktivt när användaren
Färgen anges som RGB-värden (rött, grönt och blått) från 0 (mörkast)
till 255 (ljusast).
*/
void example_set_color(magic_api *api, int which, SDL_Surface *canvas,
void example_set_color(magic_api *api, int which, SDL_Surface *malarduk,
SDL_Surface *ogonblicksbild, Uint8 r, Uint8 g, Uint8 b,
SDL_Rect *uppdatering_rect)
{
@ -565,7 +565,7 @@ värde som returneras av vår example_accepted_sizes()-funktion under
installationen.
*/
void example_set_size(magic_api *api, int which, int mode,
SDL_Surface *canvas, SDL_Surface *ogonblicksbild,
SDL_Surface *malarduk, SDL_Surface *ogonblicksbild,
Uint8 storlek, SDL_Rect *uppdatering_rect)
{
/*
@ -583,18 +583,18 @@ void example_set_size(magic_api *api, int which, int mode,
/*
Vår "callback"-funktion
Vi gör "arbetet" i denna återuppringning. Vår plugin-fil har bara en.
Vissa plugins för "magiska" verktyg kan ha fler, beroende vilka
Vi gör "arbetet" i denna återuppringning. Vår tilläggsfil har bara en.
Vissa tillägg för "magiska" verktyg kan ha fler, beroende vilka
verktyg de tillhandahåller. Vissa har inga (eftersom de inte är
klick-och-drag-verktyg i målningsstil).
Vår callback-funktion anropas en gång för varje punkt längs en linje
mellan musens föregående och nuvarande position, när den dras.
Vår callback uppmärksammar 'som' för att avgöra vilket av pluginets
verktyg som för närvarande är valt.
Vår callback uppmärksammar 'som' för att avgöra vilket av
tilläggsverktyg som för närvarande är valt.
*/
void example_line_callback(void *pointer, int som, SDL_Surface *canvas,
void example_line_callback(void *pekare, int som, SDL_Surface *malarduk,
SDL_Surface *ogonblicksbild, int x, int y)
{
/*
@ -608,7 +608,7 @@ void example_line_callback(void *pointer, int som, SDL_Surface *canvas,
"(magic_api *)" nedan kastar den generiska "void *"-pekaren till den
"typ" av pekare vi vill ha, en pekare till en "magic_api"-struktur)
*/
magic_api *api = (magic_api *) pointer;
magic_api *api = (magic_api *) pekare;
int xx, yy;
/*
@ -624,8 +624,8 @@ void example_line_callback(void *pointer, int som, SDL_Surface *canvas,
fungerar som en 1x1 pixel-pensel.
*/
api->putpixel(canvas, x, y,
SDL_MapRGB(canvas->format,
api->putpixel(malarduk, x, y,
SDL_MapRGB(malarduk->format,
example_r, example_g, example_b));
/*
@ -647,7 +647,7 @@ void example_line_callback(void *pointer, int som, SDL_Surface *canvas,
{
for (xx = -example_storlek; xx < example_storlek; xx++)
{
api->putpixel(canvas, x + xx, y + yy,
api->putpixel(malarduk, x + xx, y + yy,
api->getpixel(ogonblicksbild,
ogonblicksbild->w - x - xx,
ogonblicksbild->h - y - yy));
@ -684,7 +684,8 @@ läget).
Vårt exempel gör ingenting när vi byter till, eller från, våra
Magic-verktyg, vi gör ingenting här.
*/
void example_switchin(magic_api *api, int som, int lage, SDL_Surface *canvas)
void example_switchin(magic_api *api, int som, int mode,
SDL_Surface *malarduk)
{
}
@ -707,6 +708,7 @@ anrop till 'example_switchin()', ovan, för det nya läget).
Vårt exempel gör ingenting när vi byter till, eller från, våra
Magic-verktyg, vi gör ingenting här.
*/
void example_switchout(magic_api *api, int som, int lage, SDL_Surface *canvas)
void example_switchout(magic_api *api, int som, int mode,
SDL_Surface *malarduk)
{
}

View file

@ -11,7 +11,7 @@ msgstr ""
"Project-Id-Version: tuxpaint\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-06-08 11:15-0700\n"
"PO-Revision-Date: 2025-04-20 19:06+0200\n"
"PO-Revision-Date: 2025-09-28 10:52+0200\n"
"Last-Translator: Daniel Nylander <github@danielnylander.se>\n"
"Language-Team: Svenska <debian-l10n-swedish@lists.debian.org>\n"
"Language: sv\n"
@ -19,7 +19,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n!=1);\n"
"X-Generator: Poedit 3.6\n"
"X-Generator: Poedit 3.7\n"
#. Response to Black (0, 0, 0) color selected
#: ../colors.h:86
@ -393,11 +393,11 @@ msgstr ""
#: ../org.tuxpaint.Tuxpaint.appdata.xml.in:52
msgid "Documentation improvements"
msgstr ""
msgstr "Dokumentationsförbättringar"
#: ../org.tuxpaint.Tuxpaint.appdata.xml.in:53
msgid "Bug fixes"
msgstr ""
msgstr "Buggfixar"
#: ../org.tuxpaint.Tuxpaint.appdata.xml.in:58
msgid "New Magic tools: \"Hearts\", \"Sparkles\", and \"Stars\"."
@ -487,8 +487,9 @@ msgid ""
"Name of files created by Open&gt;Export and Open&gt;Slideshow&gt;Export GIF "
"are now displayed as well as placed in copy/paste clipboard."
msgstr ""
"Namnet på filer som skapats av Öppna&gt;Exportera och Öppna&gt;Bildspel&gt;"
"Exportera GIF visas nu och placeras i urklipp för kopiera/klistra in."
"Namnet på filer som skapats av Öppna&gt;Exportera och "
"Öppna&gt;Bildspel&gt;Exportera GIF visas nu och placeras i urklipp för "
"kopiera/klistra in."
#: ../org.tuxpaint.Tuxpaint.appdata.xml.in:82
msgid "Localization updates."