********************************************************************************
*
*   \         (c) Thomas Antoni, 25.12.2003 - 2.2.2006
*    \ /\           Mailto:thomas@antonis.de
*    ( )            Downloaded from www.antonis.de --- www.qbasic.de   
*  .( o ).
*                        ----==== Hottest QBasic Stuff on Earth !!! ====----
*
********************************************************************************

********************************************************************************
*
* .----------------.
* | ENGLISH  INFO  |  (Deutsche Info: Siehe unten)
* '----------------'
*
* Download File  : aklib14b - AK-SVGA-Lib V1.4 Beta, an SVGA-Library for QB 
*                  ===========================================================
* Prog. Language : QuickBasic 4.5 und 7.1
* Author         : Andre Klein (A.K.)
*   - E-Mail     : webmaster@iconsoft.de
*   - Website    : www.iconsoft.de/
*
********************************************************************************

*** Short Description
The AK-Lib is a SVGA-Lib for QuickBASIC 4.5 and 7.1/PDS which runs on nearly
each PC and works troublefree under newer Windows systems such as Windows XP -
a big advantage as against DirectQB and Future.lib.

Features:
- Screen resolutions up to 1600x1200 Pixels with 256, 32768 and 65536 colors
- Picture loader supporting the formats BMP, ICO, PCX, GIF, QBP and KMX
- All important graphic statements (PSET, POINT, LINE, GET, PUT, PRINT, INPUT,...)
- Windows-fashioned mouse buttons and message boxes
- Mouse suport
- Easy to install and to use
- German-language instructions and user interface

*** Contents
The download package contains
- for QuickBasic 4.5:
    . ak14b.QLB
    . ak14b.LIB
    . ak14b.TXT = detailed German-language instructions
- for QuickBasic 7.1 (PDS/QBX):
    . ak14b71.QLB
    . ak14b71.LIB
- DEMO\ = a couple og breathtaking demo progs using the AK-Lib, programmed
          by C@rlo. Refer to DEMO\_Antoni.txt for a short description. 


*** Application instructions
You will need at least QB V4.0 for using the AK-Lib. Call QuickBasic via the
following command line:

      QB /L ak14.qlb 
      

*** Rating
+++    (in a range of + to +++)


********************************************************************************
*
* .---------------.
* | DEUTSCHE INFO |
* '---------------'
*                        
* Download-Datei: aklib14b - AK-SVGA-Lib V1.4 Beta, eine SVGA-Bibliothek fr QB 
*                 =============================================================
* Progr.sprache : QuickBasic 4.5 und 7.1
* Autor         : Andre Klein (A.K.)
*   - E-Mail    : webmaster@iconsoft.de
*   - Webseite  : www.iconsoft.de/
*
********************************************************************************

Kurzbeschreibung
================================================================================
Die AK-Lib ist eine SVGA-Bibliothek fr QuickBASIC 4.5 und 7.1/PDS , die auf 
fast jedem PC und problemlos auch unter neueren Windows-Versionen wie Windows XP 
funktioniert - im Gegensatz zu vielen anderen Multimedia-Libs wie DirectQB und 
Future.Lib   

Die wichtigsten Funktionen der AK-Lib sind:
- Bildschirm-Auflsungen bis zu 1600x1200 Pixel bei 256, 32768 und 65536 Farben
- Bilder anzeigen (BMP, ICO, PCX, GIF, QBP, KMX)
- Alle wichtigen Grafik-Befehle (PSET, POINT, LINE, GET, PUT, PRINT, INPUT,...)
- Windows-hnliche Click-Buttons und Dialogboxen
- Mausuntersttzung
- Extrem einfach zu installieren und verwenden.
- Deutsche Beschreibung und Oberflche

Fr die nchste Version V1.5 plant Andre die folgenden Ergnzungen:
- Sound- und Video-Untersttzung
- Unterstzung des erweiterten EMS-Speichers
- Integrierter Font-Editor zum Erzeugen eigener Schriften

Ein Interview, das Thomas Antoni Anfang 2004 mit Andre Klein fhrte, findest Du auf
www.qbasic.de in der Interview-Rubrik.


Inhalt des Downloadpakets
================================================================================
Das Downloadpaket enthlt
- fr QuickBasic 4.5:
    . ak14b.QLB
    . ak14b.LIB
    . ak14b.TXT = ausfhrliche Anleitung
- fr QuickBasic 7.1 (PDS/QBX):
    . ak14b71.QLB
    . ak14b71.LIB
- DEMO\ = eine Reihe von atemberaubenden Demos zur AK-Lib von C@rlo.
    Eine Kurzbeschreibung findet man dort in der Datei DEMO\_Antoni.txt. 


Anwendungshinweise
================================================================================
Um die LIB zu nutzen, bentigt man mindestens QB V4.0 und mu QuickBasic 
folgendermaen aufrufen:
 
      QB /L ak14.qlb 
      
Weitere Infos zum allgemeinen Umgang mit Bibliotheken hat A.K zu einem 
speziellen Tutorial zusammengefasst, das auf www.iconsoft.de zur Verfgung 
steht - unter TUTORIALS -> "Bibliotheken in QB" . 


Bewertung
===============================================================================
+++   (in einer Skala von + bis +++)



+----------------------------------------------------------------------------
|       Ausfhrliche Beschreibung von A.K.s Webseite www.iconsoft.de
+----------------------------------------------------------------------------
Nach fast einem Jahr ist es jetzt endlich soweit, dass ich meine SVGA-Lib fr QB 
(fast) fertiggestellt habe, und hier mchte sie dir jetzt vorstellen. 

Es gibt doch schon SVGA-Lib's! Warum denn noch eine? 
Und zwar mute ich die Erfahrung machen das einige SVGA-Lib's bei mir nicht 
liefen und andere die liefen waren in der Syntax viel zu kompliziert. Und da 
habe ich mich entschieden selber eine zu schreiben die sowohl funktioniert als 
auch einfach zu bedienen ist! Ausserdem ging es mir um den Spa am Programmieren 
und ums Dazulernen. Wenn man nmlich sowas macht, muss man sich sehr stark mit dem 
System auseinander setzen. 

Aktuelle Fhigkeiten meiner LIB und was noch kommen soll: 
- Untersttzung aller VESA-Grafik-Modi mit 256,15K und 16K Farben 
- Das sind dann alle Screen-Modi >= &H100.
  Es werden aber auch die Moden &H8,&H9,&H12 und &H13 untersttzt.
  Die jeweiligen Modi stehen fr die quivalenten QB-Modi.
  Es lassen sich alle Grafikbefehle der LIB dort als Alternative zu den
  normalen QB-Befehlen benutzen. Das gilt zum Beispiel auch fr SET.PICTURE.
- Auflsungen bis zu 1600x1200 (Grafikkarten- und Monitorabhngig) 
- SCREEN 8,9,12,13 kompatibel 
- PSET, POINT, LINE, GET, PUT und weitere Standard-Befehle 
- pixelgenaue PRINT und INPUT-Routinen mit und ohne Hintergrund 
- eigene Schriftarten ladbar 
- pixelgenaues Anzeigen von Bildern (BMP, ICO, PCX, GIF, QBP, KMX) 
- Untersttzung von mehreren Bildschirmseiten 
- Mausuntersttzung 
- Laden von Mauszeigern 
- Untersttzung von BUTTON's mit Kontrollfunktionen 
- BUTTON's mit Bildoberflchen 
- FENSTER mit Bildoberflchen 
- speichern von Grafikbereichen als QBP- oder BMP-Bild 
- automatische Bild-Konvertierungs-Routinen die ein Bild den aktuellen
  Farben anpasst 
- MsgBox Funktionen mit auswhlbaren BUTTON's 
- Grafikbereich-Definitionen 
- alle direkten Grafik-Routinen in Assembler geschrieben und dadurch sehr
  schnell 

Das habe ich noch vor: 
- RAM-Untersttzung 
- Video-Untersttzung 
- Sound-Untersttzung 
- Kompatibilitt zu VisualBasic-Forms herstellen (mit Textfeldern, Labels...) 
- Mensteuerung 


+----------------------------------------------------------------------------
|       Hilfedatei von A.K.s Webseite www.iconsoft.de
+----------------------------------------------------------------------------

Vorwort 
--------------------------------------------------------------------------------
Diese Seite soll eine Hilfe sein fr alle die gerade mit der AK-LIB anfangen und 
nicht wissen wie man sie benutzt. Es gibt aber auch Tipps fr Fortgeschrittene. 
Wenn ihr spezielle Fragen habt dann knnt ihr sie mir per Mail schicken und ich 
werde sie hier mit reinstellen. 


Wie kann ich die AK-LIB in QB benutzen? 
--------------------------------------------------------------------------------
Damit man die AK-LIB in QB benutzen kann, bentigt man mindestens QB4.0/4.5 oder 
QB7.1/PDS/QBX. In den Downloaddateien gibt es immer jeweils eine Version fr die 
entsprechende QB-Version. Sie sind entsprechend gekennzeichnet. Um die LIB in QB 
zu benutzen, gibt man anstatt "qb.exe" z.B. einfach "qb.exe /L ak14b.qlb" ein. 
Es ffnet sich nun QB mit einem leeren Fenster. Nun kannst du alle Befehle die 
die LIB enthlt so aufrufen als ob sie ein SUB wren. Also mit CALL. Eine 
Befehlsliste liegt jedem ZIP-Archiv bei. Fr weitergehende Informationen zu 
Bibliotheken siehe mein Tutorial "Bibliotheken in QB" unter 
www.iconsoft.de/index.php?show=tutorial_libs


Das erste Programm mit der AK14b 
--------------------------------------------------------------------------------
Hier ist ein Beispielprogramm welches verdeutlichen soll, auf welche Art und 
Weise Programme mit der AK-LIB programmiert werden. Hier beziehe ich mich auf 
die AK14b-Mischversion. 

Befehl Erklrung 
- CALL XSCREEN (&H101) Hiermit setzen wir einen Bildschirmmodus. In diesem 
    Fall den Modus &H101. Dieser steht fr eine Auflsung von 640x480 Pixeln mit 
    256 Farben. 
- CALL XPSET (320,240,10) Mit dem Befehl XPSET setzen wir einen Pixel an die 
    Position 320,240 mit der Farbe 10 (Hellgrn bei Standardpalette) 
- CALL XPOINT (320,240,f%) Mit dem Befehl XPOINT fragen wir die Farbe des 
    Pixels an der Position 320,240 ab. Da wir vorher einen Pixel mit der Farbe 
    10 an diese Stelle gesetzt haben, wird die 10 auch als Ergebnis in der 
    Variable f% zurckgegeben 
- CALL XCOLOR (14,1,0) Mit dem Befehl XCOLOR setzen wir die Schriftfarbe. Der 
    erste Wert ist die Textfarbe(hier 14, gelb), der zweite Wert ist die 
    Hintergrundfarbe des Textes( hier 1, blau), der letzte Wert gibt an ob der 
    Hintergrund des Textes bermalt werden soll oder ob der Text "transparent" 
    sein soll. (hier 0 = Hintergrund bermalen, 1 = transparent)  
- CALL XPRINT (0,0, STR(f%) ) Mit dem Befehl XPRINT kann man pixelgenau einen 
    Textstring auf den Bildschirm schreiben. Hier an Position 0,0. Dadurch das 
    wir vorher die Farben mit XCOLOR festgelegt haben erscheint der Text nun 
    Gelb auf Blau. 

Damit haben wir jetzt ein kleines Beispielprogramm welches erklrt wie 
programmiert wird. Anmerkung: Alle Werte die an die SUB's bergeben werden 
und Zahlen sind, werden als Integer-Wert bergeben! Dies macht man dem Sub 
entweder mit einem "%" an der Variable klar oder man definiert die Variablen 
vorher so: DIM variable AS INTEGER. Oder man schreibt an den Anfang seines 
Programmes ein DEFINT A-Z. Dann sind alle Variablen, wenn nicht anders 
definiert, Integer-Variablen. 


Welche Nummer hat welcher Bildschirmmodus? 
--------------------------------------------------------------------------------
Hier eine kleine Liste mit den Nummern der Bildschirmmodis. 

Nummer Auflsung Bemerkung 

- &H8 640x200 mit 16 Farben benutzt eine Palette, QB-Mal-Befehle und LIB-Mal-
Befehle knnen gemeinsam verwendet werden. 

- &H9 640x350 mit 16 Farben benutzt eine Palette, QB-Mal-Befehle und LIB-Mal-
Befehle knnen gemeinsam verwendet werden. 

- &H12 640x480 mit 16 Farben benutzt eine Palette, QB-Mal-Befehle und LIB-Mal-
Befehle knnen gemeinsam verwendet werden. 

- &H13 320x200 mit 256 Farben benutzt eine Palette, QB-Mal-Befehle und LIB-
Mal-Befehle knnen gemeinsam verwendet werden. 

Nummer Auflsung Bemerkung 
- &H12E 320x200 mit 256 Farben benutzt eine Palette 
- &H131 320x240 mit 256 Farben benutzt eine Palette 
- &H100 640x400 mit 256 Farben benutzt eine Palette 
- &H101 640x480 mit 256 Farben benutzt eine Palette 
- &H103 800x600 mit 256 Farben benutzt eine Palette 
- &H105 1024x768 mit 256 Farben benutzt eine Palette 
- &H107 1280x1024 mit 256 Farben benutzt eine Palette 
- &H120 1600x1200 mit 256 Farben benutzt eine Palette 

Nummer Auflsung Bemerkung 
- &H10D 320x200 mit 32768 Farben benutzt KEINE Palette, wird als HI-Color oder 
    Pseudo-TrueColor bezeichnet 
- &H132 320x240 mit 32768 Farben benutzt KEINE Palette, wird als HI-Color oder 
    Pseudo-TrueColor bezeichnet 
- &H110 640x480 mit 32768 Farben benutzt KEINE Palette, wird als HI-Color oder 
    Pseudo-TrueColor bezeichnet 
- &H113 800x600 mit 32768 Farben benutzt KEINE Palette, wird als HI-Color oder 
    Pseudo-TrueColor bezeichnet 
- &H116 1024x768 mit 32768 Farben benutzt KEINE Palette, wird als HI-Color 
    oder Pseudo-TrueColor bezeichnet 
- &H119 1280x1024 mit 32768 Farben benutzt KEINE Palette, wird als HI-Color 
    oder Pseudo-TrueColor bezeichnet 
- &H121 1600x1200 mit 32768 Farben benutzt KEINE Palette, wird als HI-Color 
    oder Pseudo-TrueColor bezeichnet 

Nummer Auflsung Bemerkung 
- &H10E 320x200 mit 65536 Farben benutzt KEINE Palette, wird als HI-Color oder 
    Pseudo-TrueColor bezeichnet 
- &H133 320x240 mit 65536 Farben benutzt KEINE Palette, wird als HI-Color oder 
    Pseudo-TrueColor bezeichnet 
- &H11D 640x400 mit 65536 Farben benutzt KEINE Palette, wird als HI-Color oder 
    Pseudo-TrueColor bezeichnet 
- &H111 640x480 mit 65536 Farben benutzt KEINE Palette, wird als HI-Color oder 
    Pseudo-TrueColor bezeichnet 
- &H114 800x600 mit 65536 Farben benutzt KEINE Palette, wird als HI-Color oder 
    Pseudo-TrueColor bezeichnet 
- &H117 1024x768 mit 65536 Farben benutzt KEINE Palette, wird als HI-Color 
    oder Pseudo-TrueColor bezeichnet 
- &H11A 1280x1024 mit 65536 Farben benutzt KEINE Palette, wird als HI-Color 
    oder Pseudo-TrueColor bezeichnet 
- &H122 1600x1200 mit 65536 Farben benutzt KEINE Palette, wird als HI-Color 
    oder Pseudo-TrueColor bezeichnet 

Nummer Auflsung Bemerkung 
- &H10F 320x200 mit 16,7M Farben benutzt KEINE Palette, wird als TrueColor 
    bezeichnet, verfgbar erst ab der AK16 
- &H134 320x240 mit 16,7M Farben benutzt KEINE Palette, wird als TrueColor 
    bezeichnet, verfgbar erst ab der AK16 
- &H11E 640x400 mit 16,7M Farben benutzt KEINE Palette, wird als TrueColor 
    bezeichnet, verfgbar erst ab der AK16 
- &H112 640x480 mit 16,7M Farben benutzt KEINE Palette, wird als TrueColor 
    bezeichnet, verfgbar erst ab der AK16 
- &H115 800x600 mit 16,7M Farben benutzt KEINE Palette, wird als TrueColor 
    bezeichnet, verfgbar erst ab der AK16 
- &H118 1024x768 mit 16,7M Farben benutzt KEINE Palette, wird als TrueColor 
    bezeichnet, verfgbar erst ab der AK16 
- &H11B 1280x1024 mit 16,7M Farben benutzt KEINE Palette, wird als TrueColor 
    bezeichnet, verfgbar erst ab der AK16 
- &H124 1600x1200 mit 16,7M Farben benutzt KEINE Palette, wird als TrueColor 
    bezeichnet, verfgbar erst ab der AK16 


Anmerkung: Es werden nicht alle Bildschirmmodis von allen Grafikkarten 
untersttzt!!! Das hngt mit der Gre des Grafikkartenspeichers, mit dem 
verwendeten VESA-Treiber und den Fhigkeiten des Monitors zusammen. Fr eine 
bersicht der Bildschirmmodi-Kompatibilitt siehe: Testecke 



Wie kann ich ein Bild in mein Programm einbauen? 
--------------------------------------------------------------------------------
Die AK-LIB untersttzt viele Bildformate. Welche dies sind steht in der 
jeweiligen Beschreibung der LIB-Version. 

Hier der Code um eine BMP-Datei anzuzeigen: 

CALL XSCREEN (&H101) '640x480x256c setzen 
CALL SET.PICTURE (0,0,"bild.bmp")
 'Bild anzeigen, 0,0 steht fr die Koordiante des Bildanfangs in Pixeln 


Wie kann ich die Maus benutzen? 
--------------------------------------------------------------------------------
Folgendes Programm soll zeigen wie man die Maus verwendet. Dafr mu ein 
Maustreiber installiert sein. 

CALL XSCREEN (&H101) '640x480x256c setzen 
CALL XMOUSE ("ON",0,0,0) 'Mauszeiger einschalten 
DO 
CALL XMOUSE ("CTRL",t%,x%,y%) 
'Mauszeiger kontrollieren lassen. 
'Der Wert einer gedrckten Taste wird in t% zurckgegeben. 
'Die Mauskoordianten in x% und y%. 
LOOP UNTIL INKEY$=CHR$(27) 



Kann ich mit der AK-LIB auch mehrere Schriftarten auf einmal verwenden? 
--------------------------------------------------------------------------------
Um eine Schriftart zu laden benutzt man folgenden Befehl: 

CALL LOAD.ARL ("font.arl") 

Alle folgenden XPRINT-Anweisungen verwenden dann die zuletzt geladene Schrift. 
Man kann dann zwischendurch natrlich eine andere Schrift laden. Alles was dann 
schon auf den Bildschirm geschrieben wurde, bleibt erhalten. Die nach dem 
LOAD.ARL-Befehl kommenden XPRINT's benutzen dann die neue Schrift. 


Wenn ihr, wie schon gesagt, noch Einsteiger und Fortgeschrittenen-Fragen habt, 
dann knnt ihr mir gerne eine Mail schreiben und ich fge die Antwort hier mit 
zu! 




+----------------------------------------------------------------------------
|       Trouble-FAQ von A.K.s Webseite www.iconsoft.de
+----------------------------------------------------------------------------

Vorwort 
-----------------------------------------------------------------------------
Auf diese FAQ geht es um Installationsprobleme, Fehler und Fehlfunktionen der 
AK-LIB. Wenn bei euch ein Fehler auftaucht der hier noch nicht beschrieben ist, 
dann bitte ich euch mir dies mitzuteilen. Denn nur was ich wei kann ich auch 
beheben. :-) Gleichzeitig soll das hier geschriebene anderen SVGA-Routinen-
Programmierern eine Hilfestellung sein. 


Hilfe, meine Maus schmiert, XGET geht nicht und XPOINT auch nicht! 
-----------------------------------------------------------------------------
Dieses Problem tritt verstrkt bei ATI-Grafikkarten auf mit den AK-LIB-Versionen 
1.4 und 1.5. Es ensteht durch die fehlende Untersttzung des B-Windows des 
VRAM's. Ab der AK-LIB V1.6 ist dieses Problem vollstndig behoben. 


Hilfe, meine Maus lsst sich nur im oberen Teil des Bildschirms bewegen! 
-----------------------------------------------------------------------------
Dieses Problem ist mir bekannt und wird wahrscheinlich durch eine 
Inkompatibilitt von Maustreiber/SVGA zu tun haben. Im Moment wird dieses 
Problem noch erforscht. 


Hilfe, es wurde keine VESA-Karte endeckt. 
-----------------------------------------------------------------------------
Bei diesem Problem kann es mehrere Ursachen geben. 

1. Benutzung der AK-LIB unter Windows. 
Wenn die DOS-Box (Das Fenster in dem das QB-Programm luft) im Fenstermodus 
ausgefhrt wird, wird folgende Meldung angezeigt: "Keine VESA-Karte gefunden". 
Dieses Problem lsst sich meistens lsen in dem man die DOS-Box im Vollbildmodus 
startet. Dies kann man wie folgt erreichen: Das Fenster aktivieren und die 
Tastenkombination ALT+ENTER drcken. 

2. Benutzung der AK-LIB unter DOS. 
Wenn die Meldung direkt unter DOS angezeigt wird dann ist das Problem ein nicht 
installierter VESA-Treiber. In diesem Fall mu dieser Treiber nachtrglich 
installiert werden. Dafr gibt es sogenannte Universal-Vesa-Treiber die die 
meisten Grafikkarten erkennen oder einen speziellen VESA-Treiber der nur fr 
diese Karte funktioniert. Den letzteren kann man sich von der jeweiligen 
Grafikkarten-Herstellerseite downloaden. 


Definition von Farben(Werte)
-----------------------------------------------------------------------------
Also in einem 256-Farb-Modus(z.B. &H101,&H103) werden die Farben genau so 
benutzt wie Du es auch in SCREEN 13 fr QB tust. Das heit 0 = Schwarz, 1 = 
Blau, 2 = Grn.... halt die Standardpalette.

Beispiel: XPSET 100,100,10 wrde einen hellgrnen Punkt zeichnen.

Man kann natrlich auch eine andere Palette aus einer Datei laden mit LOAD.PAL 
palfile$. Fr diese PAL-Dateien gibt es aber noch keinen Editor.

Wenn es sich um einen Grafik-Modus mit 32768 oder 65536 Farben handelt(z.B 
&H110,&H113,&H111,&H114), dann beinhaltet die "Farbzahl" die direkten Rot, Grn 
und Blau-Werte. Dabei stehen jeder Grundfarbe genau 5Bit in der Farbzahl zur 
Verfgung. Das werde ich aber nicht weiter ausfhren, sondern verweise auf das 
SUB RGBto15 und RGBto16. Mit diesen Sub's kann man dann einen beliebigen RGB-
Wert in die entsprechende Farbe umwandeln. RGBto15 ist fr 32768 Farben und 
RGBto16 ist fr 65536 Farben.
Beispiel:

XSCREEN &H110 '640x480x32768c
red%=255
green%=0
blue%=0
RGBto15 red%, green%, blue%, farbwert15%
XPSET 100,100,farbwert15%


Welche Datentypen knnen mit XINPUT eingegeben werden?
  (Integer/Long/Single/Double/String)
-----------------------------------------------------------------------------
Die Declare-Anweisung lautet:
DECLARE SUB XINPUT x%,y%,text$,textlen%

Anhand dieses Declares kann man erkennen das nur STRING's mglich sind.
textlen% bezeichnet die maximale Lnge des eingebenen Textes oder 0 fr
"unendlich".


Knnen TrueType-Fonts geladen werden?
-----------------------------------------------------------------------------
Im Moment knnen nur ".ARL" Dateien geladen werden. Dafr gibts auch einen 
FontEditor von Zappa. Das Modul fr ".TTF"-Datei ist bereits im "Bau", aber das 
wird noch ne Weile dauern.


Kann man in der MsgBOX zweizeilig schreiben?
-----------------------------------------------------------------------------
Nein, leider nur einzeilig. Mit der AK15 wird dies auch mehrzeilig 
funktionieren. Ein Zeilenumbruch, wird dann durch ein CHR$(13) erzeugt oder wenn 
der Text zu lang ist.


 