the invention is a collection of software . the first software component enables its user to create a document ( hereinafter referred to as “ image creator ”). the second software component enables a user to specify which fonts , colors , and / or languages to display the document in ( hereinafter referred to as “ image server ”). the image creator and image server were created using a computer with the following hardware configuration : intel pentium 4 processor running at 2 . 53 ghz , 256 mb ram , 64 mb ddr nvidia geforce4 mx 420 graphics card , samsung sw - 248f cd - r / rw drive , wdc wd300bb - 75dea0 hard drive ( partitioned as 10 gb c - drive ; 750 mb d - drive ), samsung sd616t dvd - rom drive , standard 101 / 102 - key keyboard , ps / 2 compatible mouse , bcm v . 92 56k modem , 17 ″ flat - panel lcd monitor , intel pro / 100 ve network card , creative labs sb live ! sound card . the network card was connected to an active intranet with internet connectivity . the image creator and image server were created using a computer with the above hardware configuration and the following software configuration : microsoft windows xp professional operating system with service pack 1 , internet information services , microsoft visual studio . net 2003 installed with microsoft visual basic . net , microsoft internet explorer version 6 . 0 , microsoft sql server 2000 enterprise edition . a . start windows xp . click the “ start ” button . click “ my computer .” in the window that appears , double - click the “ d ” drive . create a new folder called “ nervology ” and double - click it . create a new folder called “ technology ” and double - click it . create a new folder called “ source ” and double - click it . create a new folder called “ products ” and double - click it . create a new folder called “ tbd ” and double - click it . create a new folder called “ 1 . 0 . 0 ” and double - click it . create a new folder called “ components .” create a new folder called “ database .” create a new folder called “ solution .” create a new folder called “ web project .” double - click the “ components ” folder . create a new folder called “ business layer .” create a new folder called “ data layer .” create a new folder called “ presentation layer .” b . click the “ start ” button . click “ control panel .” in the window that appears , double - click “ administrative tools .” double - click “ internet information services .” in the new window that appears , expand the tree - view until “ default web site ” appears . right - click on “ default web site .” in the menu that appears , click “ properties .” in the window that appears , click the “ home directory ” tab . click the “ browse . . . ” button next to “ local path .” in the window that appears , double - click the “ d ” drive . double - click the “ nervology ” folder . double - click the “ technology ” folder . double - click the “ source ” folder . double - click the “ products ” folder . double - click the “ tbd ” folder . double - click the “ 1 . 0 . 0 ” folder . double - click the “ web project ” folder . click the “ ok ” button . that window will close . in the window that appears , click the “ ok ” button . c . start microsoft visual studio . net 2003 . d . click the “ file ” menu . in the menu that appears , click “ new .” in the menu that appears , click “ project . . . ” e . a new window will appear . in the tree - view under “ project types ” click the “ visual basic projects ” folder . in the list - view under “ templates ” click the “ asp . net web application ” icon . type “ web ” into the text - box next to “ name .” click the “ browse . . . ” button next to “ location .” in the new window that appears , click the “ desktop ” icon . double - click “ my computer .” double - click the “ d ” drive . double - click the “ nervology ” folder . double - click the “ technology ” folder . double - click the “ source ” folder . double - click the “ products ” folder . double - click the “ tbd ” folder . double - click the “ 1 . 0 . 0 ” folder . double - click the “ web project ” folder . click the “ open ” button . that window will close . in the window that appears , click the “ ok ” button . f . once the “ web ” project appears in the “ solution explorer ” window , close microsoft visual studio . net 2003 . g . click the “ start ” button . click “ control panel .” in the window that appears , double - click “ administrative tools .” double - click “ internet information services .” in the new window that appears , expand the tree - view until “ default web site ” appears . right - click on “ default web site .” in the menu that appears , click “ properties .” in the window that appears , click the “ home directory ” tab . click the “ browse . . . ” button next to “ local path .” in the window that appears , double - click the “ d ” drive . click the “ ok ” button . that window will close . in the window that appears , click the “ ok ” button . h . click the “ start ” button . click “ my computer .” double - click the “ d ” drive . double - click the “ nervology ” folder . double - click the “ technology ” folder . double - click the “ source ” folder . double - click the “ products ” folder . double - click the “ tbd ” folder . double - click the “ 1 . 0 . 0 ” folder . double - click the “ web project ” folder . double - click the “ web ” folder . select all files and folders . click the “ edit ” menu . in the menu that appears , click “ cut .” click the “ back ” button . click the “ edit ” menu . in the menu that appears , click “ paste .” click the “ web ” folder . press the “ delete ” key . in the window that appears , click the “ yes ” button . i . click the “ start ” button . click “ control panel .” in the window that appears , double - click “ administrative tools .” double - click “ internet information services .” in the new window that appears , expand the tree - view until “ default web site ” appears . right - click on “ default web site .” in the menu that appears , click “ properties .” in the window that appears , click the “ home directory ” tab . click the “ browse . . . ” button next to “ local path .” in the window that appears , double - click the “ d ” drive . double - click the “ nervology ” folder . double - click the “ technology ” folder . double - click the “ source ” folder . double - click the “ products ” folder . double - click the “ tbd ” folder . double - click the “ 1 . 0 . 0 ” folder . double - click the “ web project ” folder . click the “ ok ” button . that window will close . in the window that appears , click the “ ok ” button . j . start microsoft visual studio . net 2003 . k . click the “ file ” menu . in the menu that appears , click “ new .” in the menu that appears , click “ blank solution . . . ” type “ solution ” into the text - box next to “ name .” click the “ browse . . . ” button next to “ location .” in the new window that appears , click the “ desktop ” icon . double - click “ my computer .” double - click the “ d ” drive . double - click the “ nervology ” folder . double - click the “ technology ” folder . double - click the “ source ” folder . double - click the “ products ” folder . double - click the “ tbd ” folder . double - click the “ 1 . 0 . 0 ” folder . double - click the “ solution ” folder . click the “ ok ” button . that window will close . l . in the “ solution explorer ” window , right - click the “ solution ” item . in the menu that appears , click “ add .” in the menu that appears , click “ existing project . . . ” in the new window that appears , click the “ desktop ” icon . double - cick “ my computer .” double - click the “ d ” drive . double - click the “ nervology ” folder . double - click the “ technology ” folder . double - click the “ source ” folder . double - click the “ products ” folder . double - click the “ tbd ” folder . double - click the “ 1 . 0 . 0 ” folder . double - click the “ web project ” folder . click the “ web . vbproj ” file . click the “ open ” button . that window will close . m . in the “ solution explorer ” window , right - click the “ solution ” item . in the menu that appears , click “ add .” in the menu that appears , click “ new project . . . ” a new window will appear . in the tree - view under “ project types ” click the “ visual basic projects ” folder . in the list - view under “ templates ” click the “ class library ” icon . type “ nervology_dl_core ” into the text - box next to “ name .” click the “ browse . . . ” button next to “ location .” in the new window that appears , click the “ desktop ” icon . double - click “ my computer .” double - click the “ d ” drive . double - click the “ nervology ” folder . double - click the “ technology ” folder . double - click the “ source ” folder . double - click the “ products ” folder . double - click the “ tbd ” folder . double - click the “ 1 . 0 . 0 ” folder . double - click the “ components ” folder . double - click the “ data layer ” folder . click the “ open ” button . that window will close . in the window that appears , click the “ ok ” button . n . in the “ solution explorer ” window , click the “ class1 ” file under the “ nervology_dl_core ” project . press the “ delete ” key . in the window that appears , click the “ ok ” button . o . in the “ solution explorer ” window , right - click the “ nervology_dl_core ” project . in the menu that appears , click “ add .” in the menu that appears , click “ add class . . . ” a new window will appear . type “ clssqldataaccess ” into the text - box next to “ name .” click the “ open ” button . copy the code from the computer program listing for “ components / data layer / nervology_dl_core / cissqldataaccess . vb into the code window . click the “ file ” menu . in the menu that appears , click “ save .” click the “ file ” menu . in the menu that appears , click “ close .” p . in the “ solution explorer ” window , right - click the “ nervology_dl_core ” project . in the menu that appears , click “ add .” in the menu that appears , click “ add class . . . ” a new window will appear . type “ clsoledataaccess ” into the text - box next to “ name .” click the “ open ” button . copy the code from the computer program listing for “ components / data layer / nervology_dl_core / clsoledataaccess . vb into the code window . click the “ file ” menu . in the menu that appears , click “ save .” click the “ file ” menu . in the menu that appears , click “ close .” q . in the “ solution explorer ” window , right - click the “ nervology_dl_core ” project . in the menu that appears , click “ add .” in the menu that appears , click “ add module . . . ” a new window will appear . type “ modmain ” into the text - box next to “ name .” click the “ open ” button . copy the code from the computer program listing for “ components / data layer / nervology_dl_core / modmain . vb into the code window . click the “ file ” menu . in the menu that appears , click “ save .” click the “ file ” menu . in the menu that appears , click “ close .” r . in the “ solution explorer ” window , right - click the “ solution ” item . in the menu that appears , click “ add .” in the menu that appears , click “ new project . . . ” a new window will appear . in the tree - view under “ project types ” click the “ visual basic projects ” folder . in the list - view under “ templates ” click the “ class library ” icon . type “ nervology_bl_core ” into the text - box next to “ name .” click the “ browse . . . ” button next to “ location .” in the new window that appears , click the “ desktop ” icon . double - click “ my computer .” double - click the “ d ” drive . double - click the “ nervology ” folder . double - click the “ technology ” folder . double - click the “ source ” folder . double - click the “ products ” folder . double - click the “ tbd ” folder . double - click the “ 1 . 0 . 0 ” folder . double - click the “ components ” folder . double - click the “ business layer ” folder . click the “ open ” button . that window will close . in the window that appears , click the “ ok ” button . s . in the “ solution explorer ” window , click the “ classl ” file under the “ nervology_bl_core ” project . press the “ delete ” key . in the window that appears , click the “ ok ” button . t . in the “ solution explorer ” window , right - click the “ nervology_bl_core ” project . in the menu that appears , click “ add .” in the menu that appears , click “ add class . . . ” a new window will appear . type “ clsfield ” into the text - box next to “ name .” click the “ open ” button . copy the code from the computer program listing for “ components / business layer / nervology_bl_core / cisfield . vb into the code window . click the “ file ” menu . in the menu that appears , click “ save .” click the “ file ” menu . in the menu that appears , click “ close .” u . in the “ solution explorer ” window , right - click the “ nervology_bl_core ” project . in the menu that appears , click “ add .” in the menu that appears , click “ add class . . . ” a new window will appear . type “ clsvalidation ” into the text - box next to “ name .” click the “ open ” button . copy the code from the computer program listing for “ components / business layer / nervology_bl_core / clsvalidation . vb into the code window . click the “ file ” menu . in the menu that appears , click “ save .” click the “ file ” menu . in the menu that appears , click “ close .” v . in tne “ solution explorer ” window , right - click the “ nervology_bl_core ” project . in the menu that appears , click “ add .” in the menu that appears , click “ add module . . . ” a new window will appear . type “ modmain ” into the text - box next to “ name .” click the “ open ” button . copy the code from the computer program listing for “ components / business layer / nervology_bl_core / modmain . vb into the code window . click the “ file ” menu . in the menu that appears , click “ save .” click the “ file ” menu . in the menu that appears , click “ close .” w . in the “ solution explorer ” window , right - click the “ nervology_bl_core ” project . in the menu that appears , click “ add .” in the menu that appears , click “ add new item . . . ” a new window will appear . in the list - view under “ templates ” click the “ assembly resource file ” icon . type “ strings . resources . resx ” into the text - box next to “ name .” click the “ open ” button . right - click the designer surface . in the menu that appears , click “ xml source .” copy the code from the computer program listing for “ components / business layer / nervology_bl_core / strings . resources . resx into the code window . click , the “ file ” menu . in the menu that appears , click “ save .” click the “ file ” menu . ln the menu that - appears , click “ close .” x . in the “ solution explorer ” window , right - click the “ solution ” item . in the menu that appears , click “ add .” in the menu that appears , click “ new project . . . ” a new window will appear . in the tree - view under “ project types ” click the “ visual basic projects ” folder . in the list - view under “ templates ” click the “ class library ” icon . type “ pl_core ” into the text - box next to “ name .” click the “ browse . . . ” button next to “ location .” in the new window that appears , click the “ desktop ” icon . double - click “ my computer .” double - click the “ d ” drive . double - click the “ nervology ” folder . double - click the “ technology ” folder . double - click the “ source ” folder . double - click the “ products ” folder . double - click the “ tbd ” folder . double - click the “ 1 . 0 . 0 ” folder . double - click the “ components ” folder . double - click the “ presentation layer ” folder . click the “ open ” button . that window will close . in the window that appears , click the “ ok ” button . y . in the “ solution explorer ” window , click the “ class1 ” file under the “ pl_core ” project . press the “ delete ” key . in the window that appears , click the “ ok ” button . z . in the “ solution explorer ” window , right - click the “ pl_core ” project . in the menu that appears , click “ add .” in the menu that appears , click “ add class . . . ” a new window will appear . type “ clsimageeditor ” into the text - box next to “ name .” click the “ open ” button . copy the code from the computer program listing for “ components / presentation layer / pl_core / cisimageeditor . vb into the code window . click the “ file ” menu . in the menu that appears , click “ save .” click the “ file ” menu . in the menu that appears , click “ close .” aa . in the “ solution explorer ” window , right - click the “ pl_core ” project . in the menu that appears , click “ add .” in the menu that appears , click “ add class . . . ” a new window will appear . type “ clsusersession ” into the text - box next to “ name .” click the “ open ” button . copy the code from the computer program listing for “ components / presentation layer / pl_core / clsusersession . vb into the code window . click the “ file ” menu . in the menu that appears , click “ save .” click the “ file ” menu . in the menu that appears , click “ close .” ab . in the “ solution explorer ” window , right - click the “ pl_core ” project . in the menu that appears , click “ add .” in the menu that appears , click “ add module . . . ” a new window will appear . type “ modmain ” into the text - box next to “ name .” click the “ open ” button . copy the code from the computer program listing for “ components / presentation layer / pl_core / modmain . vb into the code window . click the “ file ” menu . in the menu that appears , click “ save .” click the “ file ” menu . in the menu that appears , click “ close .” ac . in the “ solution explorer ” window , right - click the “ pl_core ” project . in the menu that appears , click “ add .” in the menu that appears , click “ add class . . . ” a new window will appear . type “ webobjects ” into the text - box next to “ name .” click the “ open ” button . copy the code from the computer program listing for “ components / presentation layer / pl_core / webobjects . vb into the code window . click the “ file ” menu . in the menu that appears , click “ save .” click the “ file ” menu . in the menu that appears , click “ close .” ad . in the “ solution explorer ” window , right - click the “ solution ” item . in the menu that appears , click “ add .” in the menu that appears , click “ new project . . . ” a new window will appear . in the tree - view under “ project types ” click the “ visual basic projects ” folder . in the list - view under “ templates ” click the “ windows control library ” icon . type “ pl_imageeditor ” into the text - box next to “ name .” click the “ browse . . . ” button next to “ location .” in the new window that appears , click the “ desktop ” icon . double - click “ my computer .” double - click the “ d ” drive . double - click the “ nervology ” folder . double - click the “ technology ” folder . double - click the “ source ” folder . double - click the “ products ” folder . double - click the “ tbd ” folder . double - click the “ 1 . 0 . 0 ” folder . double - click the “ components ” folder . double - click the “ presentation layer ” folder . click the “ open ” button . that window will close . in the window that appears , click the “ ok ” button . ae . in the “ solution explorer ” window , click the “ usercontrol1 ” file under the “ pl_imageeditor ” project . press the “ delete ” key . in the window that appears , click the “ ok ” button . af . in the “ solution explorer ” window , right - click the “ pl_imageeditor ” project . in the menu that appears , click “ add .” in the menu that appears , click “ add class . . . ” a new window will appear . type “ clsimageserver ” into the text - box next to “ name .” click the “ open ” button . copy the code from the computer program listing for “ components / presentation layer / pl_imageeditor / cisimageserver . vb into the code window . click the “ file ” menu . in the menu that appears , click “ save .” click the “ file ” menu . in the menu that appears , click “ close .” ag . in the “ solution explorer ” window , right - click the “ pl_imageeditor ” project . in the menu that appears , click “ add .” in the menu that appears , click “ add class . . . ” a new window will appear . type “ cistoolcoordinates ” into the text - box next to “ name .” click the “ open ” button . copy the code from the computer program listing for “ components / presentation layer / pl_imageeditor / clstoolcoordinates . vb into the code window . click the “ file ” menu . in the menu that appears , click “ save .” click the “ file ” menu . in the menu that appears , click “ close .” ah . in the “ solution explorer ” window , right - click the “ pl_imageeditor ” project . in the menu that appears , click “ add .” in the menu that appears , click “ add user control . . . ” a new window will appear . type “ ctllineobject ” into the text - box next to “ name .” click the “ open ” button . copy the code from the computer program listing for “ components / presentation layer / pl_imageeditor / ctllineobject . vb into the code window . click the “ file ” menu . in the menu that appears , click “ save .” click the “ file ” menu . in the menu that appears , click “ close .” ai . in the “ solution explorer ” window , right - click the “ pl_imageeditor ” project . in the menu that appears , click “ add .” in the menu that appears , click “ add user control . . . ” a new window will appear . type “ ctlrichtextbox ” into the text - box next to “ name .” click the “ open ” button . copy the code from the computer program listing for “ components / presentation layer / pl_imageeditor / ctlrichtextbox . vb into the code window . click the “ file ” menu . in the menu that appears , click “ save .” click the “ file ” menu . in the menu that appears , click “ close .” aj . in the “ solution explorer ” window , right - click the “ pl_imageeditor ” project . in the menu that appears , click “ add .” in the menu that appears , click “ add user control . . . ” a new window will appear . type “ ctlruler ” into the text - box next to “ name .” click the “ open ” button . copy the code from the computer program listing for “ components / presentation layer / pl_imageeditor / ctlruler . vb into the code window . click the “ file ” menu . in the menu that appears , click “ save .” click the “ file ” menu . in the menu that appears , click “ close .” ak . in the “ solution explorer ” window , right - click the “ pl_imageeditor ” project . in the menu that appears , click “ add .” in the menu that appears , click “ add user control . . . ” a new window will appear . type “ ctltextobject ” into the text - box next to “ name .” click the “ open ” button . copy the code from the computer program listing for “ components / presentation layer / pl_imageeditor / ctltextobject . vb into the code window . click the “ file ” menu . in the menu that appears , click “ save .” click the “ file ” menu . in the menu that appears , click “ close .” al . in the “ solution explorer ” window , right - click the “ pl_imageedito ” project . in the menu that appears , click “ add .” in the menu that appears , click “ add windows form . . . ” a new window will appear . type “ frmconfigure ” into the text - box next to “ name .” click the “ open ” button . copy the code from the computer program listing for “ components / presentation layer / pl_imageeditor / frmconfigure . vb into the code window . click the “ file ” menu . in the menu that appears , click “ save .” click the “ file ” menu . in the menu that appears , click “ close .” am . in the “ solution explorer ” window , right - click the “ pl_imageeditor ” project . in the menu that appears , click “ add .” in the menu that appears , click “ add windows form . . . ” a new window will appear . type “ frmimageurl ” into the text - box next to “ name .” click the “ open ” button . copy the code from the computer program listing for “ components / presentation layer / pl_imageeditor / frmimageurl . vb into the code window . click the “ file ” menu . in the menu that appears , click “ save .” click the “ file ” menu . in the menu that appears , click “ close .” an . in the “ solution explorer ” window , right - click the “ pl_imageeditor ” project . in the menu that appears , click “ add .” in the menu that appears , click “ add windows form . . . ” a new window will appear . type “ frmlogin ” into the text - box next to “ name .” click the “ open ” button . copy the code from the computer program listing for “ components / presentation layer / pl_imageeditor / frmlogin . vb into the code window . click the “ file ” menu . in the menu that appears , click “ save .” click the “ file ” menu . in the menu that appears , click “ close .” ao . in the “ solution explorer ” window , right - click the “ pl_imageeditor ” project . in the menu that appears , click “ add .” in the menu that appears , click “ add windows form . . . ” a new window will appear . type “ frmnew ” into the text - box next to “ name .” click the “ open ” button . copy the code from the computer program listing for “ components / presentation layer / pl_imageeditor / frmnew . vb into the code window . click the “ file ” menu . in the menu that appears , click “ save .” click the “ file ” menu . in the menu that appears , click “ close .” ap . in the “ solution explorer ” window , right - click the “ pl_imageeditor ” project . in the menu that appears , click “ add .” in the menu that appears , click “ add windows form . . . ” a new window will appear . type “ frmobjects ” into the text - box next to “ name .” click the “ open ” button . copy the code from the computer program listing for “ components / presentation layer / pl_imageeditor / frmobjects . vb into the code window . click the “ file ” menu . in the menu that appears , click “ save .” click the “ file ” menu . in the menu that appears , click “ close .” aq . in the “ solution explorer ” window , right - click the “ pl_imageeditor ” project . in the menu that appears , click “ add .” in the menu that appears , click “ add windows form . . . ” a new window will appear . type “ frmopen ” into the text - box next to “ name .” click the “ open ” button . copy the code from the computer program listing for “ components / presentation layer / pl_imageeditor / frmopen . vb into the code window . click the “ file ” menu . in the menu that appears , click “ save .” click the “ file ” menu . in the menu that appears , click “ close .” ar . in the “ solution explorer ” window , right - click the “ pl_imageeditor ” project . in the menu that appears , click “ add .” in the menu that appears , click “ add windows form . . . ” a new window will appear . type “ frmsave ” into the text - box next to “ name .” click the “ open ” button . copy the code from the computer program listing for “ components / presentation layer / pl_imageeditor / frmsave . vb into the code window . click the “ file ” menu . in the menu that appears , click “ save .” click the “ file ” menu . in the menu that appears , click “ close .” as . in the “ solution explorer ” window , right - lick the “ pl_imageeditor ” project . in the menu that appears , click “ add .” in the menu that appears , click “ add windows form . . . ” a new window will appear . type “ frmtextobjectproperties ” into the text - box next to “ name .” click the “ open ” button . copy the code from the computer program listing for “ components / presentation layer / pl_imageeditor / frmtextobjectproperties . vb into the code window . click the “ file ” menu . in the menu that appears , click “ save .” click the “ file ” menu . in the menu that appears , click “ close .” at . in the “ solution explorer ” window , right - lick the “ pl_imageeditor ” project . in the menu that appears , click “ add .” in the menu that appears , click “ add user control . . . ” a new window will appear . type “ imagecreator ” into the text - box next to “ name .” click the “ open ” button . copy the code from the computer program listing for “ components / presentation layer / pl_imageeditor / imagecreator . vb into the code window . click the “ file ” menu . in the menu that appears , click “ save .” click the “ file ” menu . in the menu that appears , click “ close .” au . in the “ solution explorer ” window , right - click the “ pl_imageeditor ” project . in the menu that appears , click “ add .” in the menu that appears , click “ add module . . . ” a new window will appear . type “ modmain ” into the text - box next to “ name .” click the “ open ” button . copy the code from the computer program listing for “ components / presentation layer / pl_imageeditor / modmain . vb into the code window . click the “ file ” menu . in the menu that appears , click “ save .” click the “ file ” menu . in the menu that appears , click “ close .” av . in the “ solution explorer ” window , right - click the “ web ” project . in the menu that appears , click “ add .” in the menu that appears , click “ add folder . . . ” rename the new folder “ imagecreator .” aw . in the “ solution explorer ” window , right - click the “ imagecreator ” folder in the “ web ” project . in the menu that appears , click “ add .” in the menu that appears , click “ add web form . . . ” a new window will appear . type “ default . aspx ” into the text - box next to “ name .” click the “ open ” button . ax . right - click on the designer surface . in the menu that appears , click “ view code .” copy the code from the computer program listing for “ web project / imagecreator / default . aspx ” into the code window . click the “ file ” menu . in the menu that appears , click “ save .” click the “ file ” menu . in the menu that appears , click “ close .” ay . in the “ solution explorer ” window , right - lick the “ web ” project . in the menu that appears , click “ add reference . . . ” a new window will appear . click the “ projects ” tab . double - click the “ pl_core ” project . double - click the “ pl_imagecreator ” project . click “ ok .” that window will close . a . in the “ solution explorer ” window , right - click the “ solution ” item . in the menu that appears , click “ add .” in the menu that appears , click “ new project . . . ” a new window will appear . in the tree - view under “ project types ” click the “ visual basic projects ” folder . in the list - view under “ templates ” click the “ class library ” icon . type “ bl_server ” into the text - box next to “ name .” click the “ browse . . . ” button next to “ location .” in the new window that appears , click the “ desktop ” icon . double - click “ my computer .” double - click the “ d ” drive . double - click the “ nervology ” folder . double - click the “ technology ” folder . double - click the “ source ” folder . double - click the “ products ” folder . double - click the “ tbd ” folder . double - click the “ 1 . 0 . 0 ” folder . double - click the “ components ” folder . double - click the “ business layer ” folder . click the “ open ” button . that window will close . in the window that appears , click the “ ok ” button . b . in the “ solution explorer ” window , right - click the “ bl_server ” project . in the menu that appears , click “ add reference . . . ” a new window will appear . click the “ projects ” tab . double - click the “ nervology_dl_core ” project . double - click the “ nervology_bl_core ” project . click “ ok .” that window will close . c . in the “ solution explorer ” window , right - click the “ bl_server ” project . in the menu that appears , click “ add .” in the menu that appears , click “ add class . . . ” a new window will appear . type “ cisserver ” into the text - box next to “ name .” click the “ open ” button . copy the code from the computer program listing for “ components / business layer / bl_server / clsserver . vb into the code window . click the “ file ” menu . in the menu that appears , click “ save .” click the “ file ” menu . in the menu that appears , click “ close .” d . in the “ solution explorer ” window , right - click the “ bl_server ” project . in the menu that appears , click “ add .” in the menu that appears , click “ add module . . . ” a new window will appear . type “ modmain ” into the text - box next to “ name .” click the “ open ” button . copy the code from the computer program listing for “ components / business layer / bl_server / modmain . vb into the code window . modify the return value of the “ getdbconnection ” function to return the proper database connection string for the database that will be used . click the “ file ” menu . in the menu that appears , click “ save .” click the “ file ” menu . in the menu that appears , click “ close .” e . in the “ solution explorer window , right - click the “ solution ” item . in the menu that appears , click “ add .” in the menu that appears , click “ new project . . . ” a new window will appear . in the tree - view under “ project types ” click the “ visual basic projects ” folder . in the list - view under “ templates ” click the “ class library ” icon . type “ pl_server ” into the text - box next to “ name .” click the “ browse . . . ” button next to “ location .” in the new window that appears , click the “ desktop ” icon . double - click “ my computer .” double - click the “ d ” drive . double - click the “ nervology ” folder . double - click the “ technology ” folder . double - click the “ source ” folder . double - click the “ products ” folder . double - click the “ tbd ” folder . double - click the “ 1 . 0 . 0 ” folder . double - click the “ components ” folder . double - click the “ presentation layer ” folder . click the “ open ” button . that window will close . in the window that appears , click the “ ok ” button . f . in the “ solution explorer ” window , right - click the “ pl_server ” project . in the menu that appears , click “ add reference . . . ” a new window will appear . click the “ projects ” tab . double - click the “ bl_server ” project . click ok .” that window will close . g . in the “ solution explorer ” window , right - click the “ pl_server ” project . in the menu that appears , click “ add .” in the menu that appears , click “ add class . . . ” a new window will appear . type “ server ” into the text - box next to “ name .” click the “ open ” button . copy the code from the computer program listing for “ components / presentation layer / bl_server / server . vb into the code window . click the “ file ” menu . in the menu that appears , click “ save .” click the “ file ” menu . in the menu that appears , click “ close .” h . in the “ solution explorer ” window , right - click the “ imagecreator ” folder in the “ web ” project . in the menu that appears , click “ add .” in the menu that appears , click “ add web form . . . ” a new window will appear . type “ server . aspx ” into the text - box next to “ name .” click the “ open ” button . i . right - click on the designer surface . in the menu that appears , click “ view code .” copy the code from the computer program listing for “ web project / imagecreator / server . aspx ” into the code window . click the “ file ” menu . in the menu that appears , click “ save .” click the “ file ” menu . in the menu that appears , click “ close .” j . in the “ solution explorer ” window , right - click the “ web ” project . in the menu that appears , click “ add reference . . . ” a new window will appear . click the “ projects ” tab . double - click the “ pl_server ” project . click “ ok .” that window will close . a . in the “ solution explorer ” window , right - click the “ web ” project . in the menu that appears , click “ set as startup project .” b . in the “ solution explorer ” window , right - click the “ default . aspx ” page in the “ imagecreator ” folder in the “ web ” project . in the menu that appears , click “ set as startup page .” c . in the “ solution explorer ” window , right - click the “ web ” project . in the menu that appears , click “ build .” d . click the “ start ” button . click “ my computer .” a new window will appear . double - click the “ d ” drive . double - click the “ nervology ” folder . “ double - click the “ technology ” folder . double - click the “ source ” folder . double - click the “ products ” folder . double - click the “ tbd ” folder . double - lick the “ 1 . 0 . 0 ” folder . double - click the “ components ” folder . double - click the “ presentation layer ” folder . double - click the “ pl_imagecreator ” folder . double - click the “ bin ” folder . select the “ pl_imagecreator . dll ” and “ pl_imagecreator . pdb ” files . click the “ edit ” menu . in the menu that appears , click “ copy .” e . click the “ start ” button . click “ my computer .” a new window will appear . double - click the “ d ” drive . double - click the “ nervology ” folder . “ double - click the “ technology ” folder . double - click the “ source ” folder . double - click the “ products ” folder . double - click the “ tbd ” folder . double - click the “ 1 . 0 . 0 ” folder . double - click the “ web project ” folder . double - click the “ imagecreator ” folder . click the “ edit ” menu . in the menu that appears , click “ paste .” in the window that appears , click “ yes .” in the window that appears , click “ yes .” f . start microsoft sql server 2000 enterprise edition enterprise manager . g . in the new window that appears , expand the tree - view to the show the sql server that the database will be hosted on ( this should match the value returned by the “ getdbconnection ” function in bl_server / modmain . vb ). h . double - click the sql server . i . right - click the “ databases ” folder . in the menu that appears , click “ new database . . . ” a new window will appear . type “ nervo2 ” into the text - box next to “ name ” ( or type the name of the database used in the “ getdbconnection ” function in bl_server / modmain . vb ). click the “ ok ” button . j . double - click the new database in the tree - view . k . click the “ tools ” menu . in the menu that appears , click “ sql query analyzer .” a new window will appear . ensure that the new database is selected in the database drop - down . l . copy the code from the computer program listing for “ database / tables / create tables . sql ” into the command window . click the “ query ” menu . click “ execute .” select all the code . press the “ delete ” key . m . copy the code from the computer program listing for “ database / stored procedures / create stored procedures . sql ” into the command window . click the “ query ” menu . click “ execute .” select all the code . press the “ delete ” key . n . copy the code from the computer program listing for “ database / scripts / create seed data . sql ” into the command window . click the “ query ” menu . click “ execute .” select all the code . press the “ delete ” key . using the image creator . a user of the image creator will use it in one of , but not limited to , the following ways : a ) via an application that is installed on their computer , b ) via microsoft internet explorer on a web page hosted by nervology . for the sake of demonstrating how the image creator is used , the latter approach will be used . prior to using the image creator , a user will have been provided a user id ( hereinafter “ user id ”) and password ( hereinafter “ password ”) with which to access the image creator . a . start microsoft internet explorer . b . type “ http :// www . nervology . com / imagecreator / default . aspx ” into the text - box next to “ address .” press the “ enter ” or “ return ” key . what is typed into this text - box may change depending on installation specifics ( i . e ., if the software is hosted by nervology or a third party , or if the location of the software is in its default location or an alternate location ). c . a window named “ login ” will appear ( drawing 1 ). the user types the image server url into the text - box next to “ image server url .” the image server url is determined by installation specifics ( i . e ., if the software is hosted by nervology or a third party , or if the location of the software is in its default location or an alternate location ). the user types their user id into the text - box next to “ user id .” the user types their password into the text - box next to “ password .” if the user clicks the “ ok ” button and the image server url and user id and password are valid , the window closes . if the user clicks the “ ok ” button and the image server url or user id or password are not valid , a message indicating such appears and the user must make the necessary corrections . if the user clicks the “ cancel ” button the window closes and use of the image creator is not allowed . for the sake of this demonstration , we will assume the user has typed a valid image server url and user id and password and has clicked the “ ok ” button . d . the image creator will appear ( drawing 2 ). e . a new image is created by clicking the “ new ” toolbar icon ( drawing 3 ). f . a window named “ new ” will appear ( drawing 4 ). the user types their desired value for the image &# 39 ; s width in pixels into the text - box next to “ width in pixels .” the value must be a whole number between 1 and 736 . the user types their desired value for the image &# 39 ; s height in pixels into the text - box next to “ height in pixels .” the value must be a whole number between 1 and 520 . the user chooses what they would like the background color of the new image to be . the background color can be white , transparent , or the color currently selected in the “ color ” toolbar icon ( drawing 5 ). if the user clicks the “ ok ” button and the width in pixels and height in pixels are valid , the window closes . if the user clicks the “ ok ” button and the width in pixels or the height in pixels are not valid , a message indicating such appears and the user must make the necessary corrections . if the user clicks the “ cancel ” button , the window closes and the new image is not created . for the sake of this demonstration , we will assume the user has typed a valid width in pixels and height in pixels and has clicked the “ ok ” button . g . the new image is created according to the specified width in pixels , height in pixels and background color ( drawing 6 ). in this demonstration , the user typed a value of “ 150 ” for the width in pixels , typed a value of “ 150 ” for the height in pixels , and chose “ white ” as the background color . h . text objects are added to the image . a text object is created by clicking the “ text tool ” toolbar icon ( drawing 7 ). the user then pushes the left mouse button down where the top - left corner of the text object should start , drags to the location where the bottom - right corner of the text object should stop , then releases the left mouse button , and the text object is created ( drawing 8 ). the text object is created with the currently selected font name ( drawing 9 ) and font size ( drawing 10 ). i . editing a text object . a text object is editable when it is selected . when a text object is first created , it is automatically selected ; the user can immediately type the appropriate text ( drawing 11 ). the font name of the text object can be changed by selecting all the text or not selecting any text and choosing the desired font name from the font name menu ( drawing 9 ). the font size of the text object can be changed by selecting all the text or not selecting any text and choosing the desired font size from the font size menu ( drawing 10 ). the font style can be changed to bold by selecting all the text or not selecting any text and clicking the “ bold ” toolbar icon ( drawing 12 ). the font style can be changed to italic by selecting all the text or not selecting any text and clicking the “ italic ” toolbar icon ( drawing 13 ). the font style can be changed to underline by selecting all the text or not selecting any text and clicking the “ underline ” toolbar icon ( drawing 14 ). any combination of bold , italic and underline can be selected . the font alignment can be changed to left by selecting all the text or not selecting any text and clicking the “ left ” toolbar icon ( drawing 15 ). the font alignment can be changed to center by selecting all the text or not selecting any text and clicking the “ center ” toolbar icon ( drawing 16 ). the font alignment can be changed to right by selecting all the text or not selecting any text and clicking the “ right ” toolbar icon ( drawing 17 ). no combination of left , center and right can be selected . the font color can be changed to any available color by selecting all the text or not selecting any text and clicking the “ color ” toolbar icon ( drawing 5 ). j . resizing a text object . a text object is resizable when it is selected . when a text object is first created , it is automatically selected . the user can immediately resize the text object . the text object can be resized horizontally and vertically by pushing the left mouse button when the mouse is positioned over the square in the top - left corner of the text object or the square in the top - right corner of the text object or the square in the bottom - left corner of the text object or the square in the bottom - right corner of the text object , dragging the mouse to the new location of the top - left corner of the text object or to the new location of the top - right corner of the text object or to the new location of the bottom - left corner of the text object or to the new location of the bottom - right corner of the text object , depending on which corner was selected , then releasing the left mouse button . the text object can be resized horizontally by pushing the left mouse button when the mouse is positioned over the square in the top - center of the text object or the square in the bottom - center of the text object , dragging the mouse to the new location of the top edge of the text object or to the new location of the bottom edge of the text object , depending on which edge was selected , then releasing the left mouse button . the text object can be resized vertically by pushing the left mouse button when the mouse is positioned over the square in the left - middle of the text object or the square in the right - middle of the text object , dragging the mouse to the new location of the left edge of the text object or to the new location of the right edge of the text object , depending on which edge was selected , then releasing the left mouse button . k . moving the text object . a text object is movable when it is selected . when a text object is first created , it is automatically selected . the user can immediately move the text object . the text object can be moved in any direction by pushing the left mouse button when the mouse is positioned on the outer edge but not over the square in any corner or any edge , dragging the mouse to the new location of the text object , then releasing the left mouse button . l . deleting the text object . a text object is able to be deleted when it is selected . when a text object is first created , it is automatically selected . the user can immediately delete the text object . the text object can be deleted by clicking the “ delete ” toolbar icon ( drawing 18 ). m . selecting a text object . a text object can be selected by clicking on it , or if the “ objects ” window is visible ( drawing 11 ), by clicking the item that corresponds to the text object the user wishes to select . the user knows which item to click by cross - referencing the text of the item to the text of the text object the user wishes to select . n . editing the properties of a text object . if the “ objects ” window is visible ( drawing 11 ), the right - clicking on the text object item for which the user wishes to edit the properties will present a context menu ( drawing 19 ). when the user clicks “ properties ” in the context menu a new window will appear ( drawing 20 ). if a user checks “ expand left ” for “ horizontal settings ,” the text object can be expanded left at the time it is rendered to accommodate text that might exceed the current size of the text object ( due to a larger font name , font size , different style ( bold , italic , underline ), or long text ( text in a different language )). if a user checks “ expand right ” for “ horizontal settings ,” the text object can be expanded right at the time it is rendered to accommodate text that might exceed the current size of the text object ( due to a larger font name , font size , different style ( bold , italic , underline ), or long text ( text in a different language )). if a user checks “ expand left and right ” for “ horizontal settings ,” the text object can be expanded left and right ( equally ) at the time it is rendered to accommodate text that might exceed the current size of the text object ( due to a larger font name , font size , different style ( bold , italic , underline ), or long text ( text in a different language )). if a user checks “ shrink left ” for “ horizontal settings ,” the text object can be shrunk from the left at the time it rendered to accommodate text that might be smaller than the current size of the text object ( due to a smaller font name , font size , different style ( bold , italic , underline ), or short text ( text in a different language )). if a user checks “ shrink right ” for “ horizontal settings ,” the text object can be shrunk from the right at the time it is rendered to accommodate text that might be smaller than the current size of the text object ( due to a smaller font name , font size , different style ( bold , italic , underline ), or short text ( text in a different language )). if a user checks “ shrink left and right ” for “ horizontal settings ,” the text object can be shrunk from the left and right ( equally ) at the time it is rendered to accommodate text that might be smaller than the current size of the text object ( due to a smaller font name , font size , different style ( bold , italic , underline ), or short text ( text in a different language )). if a user checks “ expand up ” for “ vertical settings ,” the text object can be expanded from the top at the time it is rendered to accommodate text that might exceed the current size of the text object ( due to a larger font name , font size , different style ( bold , italic , underline ), or long text ( text in a different language )). if a user checks “ expand down ” for “ vertical settings ,” the text object can be expanded from the bottom at the time it is rendered to accommodate text that might exceed the current size of the text object ( due to a larger font name , font size , different style ( bold , italic , underline ), or long text ( text in a different language )). if a user checks “ expand up and down ” for “ vertical settings ,” the text object can be expanded from the top and bottom ( equally ) to accommodate text that might exceed the current size of the text object ( due to a larger font name , font size , different style ( bold , italic , underline ), qr long text ( text in a different language )). if a user checks “ shrink up ” for “ vertical settings ,” the text object can be shrunk from the top to accommodate text that might be smaller than the current size of the text object ( due to a smaller font name , font size , different style ( bold , italic , underline ), or short text ( text in a different language )). if a user checks “ shrink down ” for “ vertical settings ,” the text object can be shrunk from the bottom to accommodate text that might be smaller than the current size of the text object ( due to a smaller font name , font size , different style ( bold , italic , underline ), or short text ( text in a different language )). if a user checks “ shrink up and down ” for “ vertical settings ,” the text object can be shrunk from the top and bottom ( equally ) to accommodate text that might be smaller than the current size of the text object ( due to a smaller font name , font size , different style ( bold , italic , underline ), or short text ( text in a different language )). only one value can be chosen for horizontal expansion . only one value can be chosen for horizontal shrinkage . only one value can be chosen for vertical expansion . only one value can be chosen for vertical shrinkage . if the user clicks the “ cancel ” button , the window closes and the properties of the text object are not saved . if the user clicks the “ ok ” button , the window closes and the properties of the text object are saved . o . line objects are added to the image . a line object is created by clicking the “ line tool ” toolbar icon ( drawing 27 ). the user then pushes the left mouse button down where the line object should start , drags to the location where the line object should stop , then releases the left mouse button , and the line object is created ( drawing 8 ). the line object is created with the currently selected line style ( drawing 28 ) and line size ( drawing 29 ). p . editing a line object . a line object is editable when it is selected . when a line object is first created , it is automatically selected . the line style of the line object can be changed by choosing the desired line style from . the line style menu ( drawing 28 ). the line size of the line object can be changed by choosing the desired line size from the line size menu ( drawing 29 ). q . resizing a line object . a line object is resizable when it is selected . when a line object is first created , it is automatically selected . the user can immediately resize the line object . the line object can be resized horizontally and vertically by pushing the left mouse button when the mouse is positioned over the square in the top - left corner of the line object or the square in the top - right corner of the line object or the square in the bottom - left corner of the line object or the square in the bottom - right corner of the line object , dragging the mouse to the new location of the top - left corner of the line object or to the new location . of the top - right corner of the line object or to the new location of the bottom - left corner of the line object or to the new location of the bottom - right corner of the line object , depending on which corner was selected , then releasing the left mouse button . r . moving the line object . a line object is movable when it is selected . when a line object is first created , it is automatically selected . the user can immediately move the line object . the line object can be moved in any direction by pushing the left mouse button when the mouse is positioned on the line but not over the square in any corner , dragging the mouse to the new location of the line object , then releasing the left mouse button . s . deleting the line object . a line object is able to be deleted when it is selected . when a line object is first created , it is automatically selected . the user can immediately delete the line object . the line object can be deleted by clicking the “ delete ” toolbar icon ( drawing 18 ). t . selecting a line object . a line object can be selected by clicking on it , or if the “ objects ” window is visible ( drawing 11 ), by clicking the item that corresponds to the line object the user wishes to select . u . saving the new image . a new image must be saved for the image server to be able to render it . a new image is saved by clicking the “ save ” button in the toolbar ( drawing 21 ). at this point , the image creator builds an xml representation of the image ( drawing 22 ) and all the objects ( text , line , etc .) it contains , so that it can be rendered by the image server . the root node of the xml document (“ image ”) stores the width in pixels of the image in the “ width ” attribute , the height in pixels of the image in the “ height ” attribute , an integer representation of the background color in the “ background ” attribute , and a bit flag that indicates whether or not the image has been changed since the last save in the “ dirtyflag ” attribute . for each object ( text , line , etc .) in the image , an element is added to the root node &# 39 ; s “ objects ” node . each text object node stores its unique identifier in the “ id ” attribute , its type in the “ type ” attribute ( a way for the image server to know what type of object it is at render time ), its number in the “ number ” attribute ( a way for the user to know which object it is when specifying its font name , color , size , style ( bold , italic , underline ), alignment , color to the image server ), its top position in the “ top ” attribute , its height in the “ height ” attribute , it &# 39 ; s left position in the “ left ” attribute , its width in the “ width ” attribute , and data pertaining to the specifics in the “ data ” attribute , delimited by a “˜|˜” delimiter . in the event of a text object , the first value of the data attribute identifies the font name , the second value of the data attribute identifies the font size , the third value of the data attribute identifies an integer representation of the font color , the fourth value of the data attribute identifies whether the font style is bold ( 0 indicates the font is not bold , 1 indicates the font is bold ), the fifth value of the data attribute identifies whether the font style is italic ( 0 indicates the font is not italic , 1 indicates the font is italic ), the sixth value of the data attribute identifies whether the font style is underline ( 0 indicates the font is not underline , 1 indicates the font is underline ), the seventh value indicates the font alignment ( 0 indicates the font is aligned left , 1 indicates the font is aligned center , 2 indicates the font is aligned right ), and the eight value of the data attribute identifies the text of the text object . in the event of a line object , the first value of the data attribute identifies the line style , the second value of the data attribute identifies the line size , the third value of the data attribute identifies the line color , and the fourth value of the data attribute identifies which corner the line begins at . after clicking the “ save ” toolbar icon , a window named “ save ” appears ( drawing 23 ). the folders visible in the “ folder ” tree - view are folders that user has created , information for which has been stored in the database . if the user clicks the “ ok ” button and has not selected a folder or not typed an image name or typed an image name that already exists in the selected folder , a message indicating such is displayed , and the user must make the necessary corrections . if the user clicks the “ ok ” button and has selected a folder but typed an image name that already exists in the selected folder , a message indicating such is displayed , and the user must make the necessary corrections . if the user clicks the “ ok ” button and has selected a folder and typed and image name that does not already exist in the selected folder , the window closes and the image is added to the database , associated to the specified folder . if the user clicks the “ cancel ” button the window closes and the image is not added to the database . v . opening an image . a previously saved image can be opened and edited , then saved , if desired . to open an image , the user clicks the “ open ” toolbar icon ( drawing 24 ). a new window named “ open ” appears ( drawing 25 ). if the user selects a folder and clicks the “ ok ” button , a message indicating that an image must be selected is displayed and the user must make the necessary corrections . if the user selects an image and clicks the “ ok ” button , the window is closed and the image is opened . if the user clicks the “ cancel ” button , the window is closed and no image is opened . an image that is opened can be edited and saved the same way a new image can ( previously described ). w . image url . once an image has been added to the database , its image url is available in the image url window ( drawing 26 ). the image url is how the image server is accessed and asked to render an image . clicking the “ copy ” button will copy the image url to the user &# 39 ; s clipboard and a message indicating such is displayed . using the image server . a user of the image server will use it in one of , but not limited to , the following ways : a ) via a web browser , pasting the image url into the text - box next to “ address ” and pressing the “ enter ” or “ return ” key , then copying the rendered image to the user &# 39 ; s clipboard , and then pasting the clipboard contents into any medium that supports pasting images from the user &# 39 ; s clipboard ( word processing document , spreadsheet , etc . ), b ) using the image url as the source of an image in a dynamically rendered or static html page . for the sake of demonstrating how the image server is used , the latter approach of using the image url as the source of an image in a static html page will be used . a . the image url from the image created in the image creator demonstration is : http :// www . nervology . com / imagecreator / server . aspx ? function = 8 & amp ; imageid = 23 & amp ; background =% 23ff ffff & amp ; 2_style = solid & amp ; 2_size = 1 & amp ; 2_color =% 23000000 & amp ; 1_font = arial & amp ; 1_size = 10 & amp ; 1_color =% 23000000 & amp ; 1_bold = 0 & amp ; 1_italic = 0 & amp ; 1_underline = 0 & amp ; 1_align = 0 & amp ; 1_text = image + creator the image url queries the image server , passing it parameters used to render the image , as follows : function 8 instructs the image server to render an image imageid 23 instructs the image server to load from the database the xml representation of the image with imageid equal to 23 background # ffffff instructs the image server to paint the background of the dynamically rendered image with a white color 2_style solid instructs the image server to paint the object with a number of 2 ( in this case , the line object ) with a solid brush 2_size 1 instructs the image server to paint the object with a number of 2 ( in this case , the line object ) with a brush width of 1 pixel 2_color # 000000 instructs the image server to paint the object with a number of 2 ( in this case , the line object ) with a black color 1_font arial instructs the image server to paint the object with a number of 1 ( in this case , the text object ) with an arial font 1_size 10 instructs the image server to paint the object with a number of 1 ( in this case , the text object ) with a font size of 10 points 1_color # 000000 instructs the image server to paint the object with a number of 1 ( in this case , the text object ) with a black color 1_bold 0 instructs the image server to paint the object with a number of 1 ( in this case , the text object ) without a bold style . if the value was 1 instead of 0 , the object would be painted with a bold style 1_italic 0 instructs the image server to paint the object with a number of 1 ( in this case , the text object ) without an italic style . if the value was 1 instead of 0 , the object would be painted with an italic style 1_underline 0 instructs the image server to paint the object with a number of 1 ( in this case , the text object ) without an underline style . if the value was 1 instead of 0 , the object would be painted with an underline style . 1_align 0 instructs the image server to paint the object with a number of 1 ( in this case , the text object ) with a left alignment . if the value was 1 instead of 0 , the object would be painted with a center alignment . if the value was 2 instead of 0 , the object would be painted with a right alignment . 1_text image instructs the image server to paint the object creator with a number of 1 ( in this case , the text object ) with a text value of image creator . at a minimum , the image url must contain parameter values for the “ function ” parameter and the “ imageid ” parameter . all other parameters are optional , and are used when the user wishes to render an image that is different from the original image . for example , the following image url will paint the object with a number of 1 ( in this case , the text object ) with the font the user specified when creating the image ( in this case , “ arial .”): alternatively , the following image url will paint the object with a number of 1 ( in this case , the text object ) with the font the user specifies in the image url (“ tahoma ”) rather than the font the user specified when creating the image (“ arial ”): in summary , when parameter values are specified , the image is painted with the parameter values . when parameter values are not specified , the image is painted with the values specified when the user created the image . b . to use the image url as the source of an image in a static html page , a user would create a new static html page in which the image is to be displayed , or open an existing static html page in which the image is to be displayed . for the sake of this demonstration , the first approach of creating a new static html page in which the image is to be displayed will be used . click the “ start ” button . click “ all programs .” click “ accessories .” click “ notepad .” in the new window that appears , type the following text : & lt ; html & gt ; & lt ; body & gt ; & lt ; img src =“ http :// www . nervology . com / imagecreator / server . aspx ? function = 8 & amp ; imagel d = 23 & amp ; background =% 23ff ffff & amp ; 2_style = solid & amp ; 2_size = 1 & amp ; 2_color =% 23000000 & amp ; 1_font = arial & amp ; 1_size = 10 & amp ; 1_color =% 23000000 & amp ; 1_bold = 0 & amp ; 1_italic = 0 & amp ; 1_underline = 0 & amp ; 1_align = 0 & amp ; 1_text = image + creator ”& gt ; & lt ;/ body & gt ; & lt ;/ html & gt ; click the “ file ” menu . in the menu that appears , click “ save .” a new window will appear . type “ image1 . html ” into the text - box next to “ file name .” choose “ all files ” from the drop - down next to “ save as type .” click the “ save ” button . open “ image1 . html ” in microsoft internet explorer . microsoft internet explorer , as it renders the html page , recognizes the “ img ” tag as a command to display an image , and recognizes the “ src ” attribute of the “ img ” tag as containing a value speciflying the location of the image to display . microsoft internet explorer then makes a request to the value of the “ src ” attribute of the “ img ” tag , in this case , the following url : http : l / www . nervology . com / imagecreator / server . aspx ? function = 8 & amp ; imagel d = 23 & amp ; background =% 23ff ffff & amp ; 2_style = solid & amp ; 2_size = 1 & amp ; 2_color =% 23000000 & amp ; 1_font = arial & amp ; 1_size = 10 & amp ; 1_color =% 23000000 & amp ; 1_bold = 0 & amp ; 1_italic = 0 & amp ; 1_underline = 0 & amp ; 1_align = 0 & amp ; 1_text = image + creator “ server . aspx ” is a server - side script , and is the entry point to the image server software . the server - side script could be in any folder , on any server , depending on installation specifics ( i . e ., if the software is hosted by nervology or a third party , or if the location of the software is in its default location or an alternate location ). below is a step - by - step process of how the request to render a dynamic image is processed : a . “ server . aspx ” reads the parameter values , and sends them to the image server software . b . the image server looks for a value for the “ function ” parameter . in this case , the value is “ 8 ” and the image server recognizes the value as an instruction to render an image . c . the image server looks for a value for the “ imageld ” parameter . in this case , the value is “ 23 ” and the image server makes a request to the database for the xml representation of the image with an “ imageld ” equal to “ 23 .” d . the image server analyzes the contents of the xml representation ( drawing 22 ). e . the image server retrieves the value for the “ width ” attribute of the root node (“ image ” node ) and determines that the width in pixels of the image will be 150 . f . the image server retrieves the value for the “ height ” attribute of the root node (“ image ” node ) and determines that the height in pixels of the image will be 150 . g . the image server retrieves the value for the “ background ” attribute of the root node (“ image ” node ) and determines that the image was created with a background color having a numeric representation of “− 1 ”, which equates to an html representation of “# ffffff .” the image server then looks to see if a value for the “ background ” parameter was specified . in this case a value of “# ffffff ” was specified . if the value was not specified , the image server would paint the image with the background color specified in the xml representation . since the value was specified , even though , in this case , it is not different from that specified in the xml representation , the image server will paint the image with the background color specified in the parameter . h . because the “ top ” and “ left ” attributes of each “ objects / object ” node of the root node (“ image ” node ) are in relation to the image creator control , the image server creates an image in memory , having the same height ( 570 pixels ) and width ( 760 pixels ) as the image creator , and a background color of white . once drawing is complete , the image server will “ extract ” a 150 pixel wide by 150 pixel high rectangle from the image starting at the top and left positions the image occupied when the user created the image . i . the image server then iterates through each “ objects / object ” node of the root node (“ image ” node ). in the case of the xml representation ( drawing 22 ), there are two “ objects / object ” nodes of the root node (“ image ” node ). the contents of the first “ objects / object ” node of the root node (“ image ” node ) are as follows : the image server first checks the value for the “ type ” attribute . this value tells the image server what type of object it will be adding to the image . in this case , the value is “ 2 ” which indicates a line object . the image server then checks the value for the “ number ” attribute . this value tells the image server which parameters correspond to this particular object . parameters with a name beginning with the value for the “ number ” attribute and an underscore character (“ _ ”) apply to this object . the image server retrieves the first value of the “ data ” attribute from the xml representation and determines that the object was created with a line style of “ solid .” it then checks for a value for the “ 2_style ” parameter . in this case , a value of “ solid ” was specified . if the value was not specified , the image server would paint the object with the line style specified in the xml representation . since the value was specified , even though , in this case , it is not different from that specified in the xml representation , the image server will paint the object with the line style specified in the parameter . the image server retrieves the second value of the “ data ” attribute from the xml representation and determines that the object was created with a line size of “ 1 .” it then checks for a value for the “ 2_size ” parameter . in this case , a value of “ 1 ” was specified . if the value was not specified , the image server would paint the object with the line size specified in the xml representation . since the value was specified , even though , in this case , it is not different from that specified in the xml representation , the image server will paint the object with the line size specified in the parameter . the image server retrieves the third value of the “ data ” attribute from the xml representation and determines that the object was created with a line color having a numeric representation of “− 16777216 ”, which equates to an html representation of “# 000000 .” it then checks for a value for the “ 2_color ” parameter . in this case , a value of “# 000000 ” was specified . if the value was not specified , the image server would paint the object with the line color specified in the xml representation . since the value was specified , even though , in this case , it is not different from that specified in the xml representation , the image server will paint the object with the line color specified in the parameter . the image server retrieves the fourth value of the “ data ” attribute from the xml representation and , because the value is “ 3 ,” determines that the object was created by drawing the line from the bottom - left corner to the top - left corner . had a value of “ 1 ” been specified , the image server would have determined that the object was created by drawing the line from the top - left corner to the bottom - right corner . had a value of “ 2 ” been specified , the image server would have determined that the object was created by drawing the line from the top - right corner to the bottom - left corner . had a value of “ 4 ” been specified , the image server would have determined that the object was created by drawing the line from the bottom - right corner to the top - left corner . the image server retrieves the value for the “ top ” attribute from the xml representation and determines that the top of the line is at the 288 th pixel . the image server retrieves the value for the “ left ” attribute from the xml representation and determines that the left of the line is at the 339 th pixel . the image server retrieves the value for the “ height ” attribute from the xml representation and determines that the height of the line is 63 pixels . the image server retrieves the value for the “ width ” attribute from the xml representation and determines that the width of the line is 81 pixels . the image server then draws a solid , 1 pixel size , black line starting at an ( x , y ) pixel coordinate of ( 339 , 288 ) and having a height of 63 pixels and a width of 81 pixels . the contents of the first “ objects / object ” node of the root node (“ image ” node ) are as follows : & lt ; object id =“ f7d60e9d - 294f - 4cde - 90ee − 299751b0e231 ” number =“ 1 ” type =“ 1 ” top =“ 234 ” height =“ 55 ” left =“ 317 ” width =“ 142 ” data =“ arial ˜|˜ 10 ˜|˜− 16777216 ˜|˜ 0 ˜|˜ 0 ˜|˜ 0 ˜|˜ 0 ˜|˜ image creator ” /& gt ; the image server first checks the value for the “ type ” attribute . this value tells the image server what type of object it will be adding to the image . in this case , the value is “ 1 ” which indicates a text object . the image server then checks the value for the “ number ” attribute . this value tells the image server which parameters correspond to this particular object . parameters with a name beginning with the value for the “ number ” attribute and an underscore character (“ _ ”) apply to this object . the image server retrieves the first value of the “ data ” attribute from the xml representation and determines that the object was created with a font name of “ arial .” it then checks for a value for the “ 1_font ” parameter . in this case , a value of “ arial ” was specified . if the value was not specified , the image server would paint the object with the font name specified in the xml representation . since the value was specified , even though , in this case , it is not different from that specified in the xml representation , the image server will paint the object with the font name specified in the parameter . the image server retrieves the second value of the “ data ” attribute from the xml representation and determines that the object was created with a font size of “ 10 .” it then checks for a value for the “ 1_size ” parameter . in this case , a value of “ 10 ” was specified . if the value was not specified , the image server would paint the object with the font size specified in the xml representation . since the value was specified , even though , in this case , it is not different from that specified in the xml representation , the image server will paint the object with the font size specified in the parameter . the image server retrieves the third value of the “ data ” attribute from the xml representation and determines that the object was created with a font color having a numeric representation of “− 16777216 ”, which equates to an html representation of “# 000000 .” it then checks for a value for the “ 1_color ” parameter . in this case , a value of “# 000000 ” was specified . if the value was not specified , the image server would paint the object with the font color specified in the xml representation . since the value was specified , even though , in this case , it is not different from that specified in the xml representation , the image server will paint the object with the font color specified in the parameter . the image server retrieves the fourth value of the “ data ” attribute from the xml representation and determines that the object was created with a font style of “ 0 ” or “ not bold .” it then checks for a value for the “ 1_bold ” parameter . in this case , a value of “ 0 ” was specified . if the value was not specified , the image server would paint the object with the font style specified in the xml representation . since the value was specified , even though , in this case , it is not different from that specified in the xml representation , the image server will paint the object with the font style specified in the parameter . the image server retrieves the fifth value of the “ data ” attribute from the xml representation and determines that the object was created with a font style of “ 0 ” or “ not italic .” it then checks for a value for the “ 1_italic ” parameter . in this case , a value of “ 0 ” was specified . if the value was not specified , the image server would paint the object with the font style specified in the xml representation . since the value was specified , even though , in this case , it is not different from that specified in the xml representation , the image server will paint the object with the font style specified in the parameter . the image server retrieves the sixth value of the “ data ” attribute from the xml representation and determines that the object was created with a font style of “ 0 ” or “ not underline .” it then checks for a value for the “ 1_underline ” parameter . in this case , a value of “ 0 ” was specified . if the value was not specified , the image server would paint the object with the font style specified in the xml representation . since the value was specified , even though , in this case , it is not different from that specified in the xml representation , the image server will paint the object with the font style specified in the parameter . the image server retrieves the seventh value of the “ data ” attribute from the xml representation and determines that the object was created with a font alignment of “ 0 ” or “ left .” it then checks for a value for the “ 1_align ” parameter . in this case , a value of “ 0 ” was specified . if the value was not specified , the image server would paint the object with the font alignment specified in the xml representation . since the value was specified , even though , in this case , it is not different from that specified in the xml representation , the image server will paint the object with the font alignment specified in the parameter . the image server retrieves the eigth value of the “ data ” attribute from the xml representation and determines that the object was created with a text value of “ image creator .” it then checks for a value for the “ 1_text ” parameter . in this case , a value of “ image creator ” was specified . if the value was not specified , the image server would paint the object with the text value specified in the xml representation . since the value was specified , even though , in this case , it is not different from that specified in the xml representation , the image server will paint the object with the text value specified in the parameter . if the values specified in the image url query attributes caused the text to exceed the length of the text object , and the user had set the properties of the text object to allow the text object to expand left , the text object would be expanded left until the text fit . if the values specified in the image url query attributes caused the text to exceed the length of the text object , and the user had set the properties of the text object to allow the text object to expand right , the text object would be expanded right until the text fit . if the values specified in the image url query attributes caused the text to exceed the length of the text object , and the user had set the properties of the text object to allow the text object to expand left and right , the text object would be expanded left and right ( equally ) until the text fit . if the values specified in the image url query attributes caused the text to fall short of the length of the text object , and the user had set the properties of the text object to allow the text object to shrink left , the text object would be shrunk left until the text fit . if the values specified in the image url query attributes caused the text to fall short of the length of the text object , and the user had set the properties of the text object to allow the text object to shrink right , the text object would be shrunk right until the text fit . if the values specified in the image url query attributes caused the text to fall short of the length of the text object , and the user had set the properties of the text object to allow the text object to shrink left and right , the text object would be shrunk left and right ( equally ) until the text fit . if the values specified in the image url query attributes caused the text to exceed the height of the text object , and the user had set the properties of the text object to allow the text object to expand up , the text object would be expanded up until the text fit . if the values specified in the image url query attributes caused the text to exceed the height of the text object , and the user had set the properties of the text object to allow the text object to expand down , the text object would be expanded down until the text fit . if the values specified in the image url query attributes caused the text to exceed the height of the text object , and the user had set the properties of the text object to allow the text object to expand up and down , the text object would be expanded up and down ( equally ) until the text fit . if the values specified in the image url query attributes caused the text to fall short of the height of the text object , and the user had set the properties of the text object to allow the text object to shrink up , the text object would be shrunk up until the text fit . if the values specified in the image url query attributes caused the text to fall short of the height of the text object , and the user had set the properties of the text object to allow the text object to shrink down , the text object would be shrunk down until the text fit . if the values specified in the image url query attributes caused the text to fall short of the height of the text object , and the user had set the properties of the text object to allow the text object to shrink up and down , the text object would be shrunk up and down ( equally ) until the text fit . the image server retrieves the value for the “ top ” attribute from the xml representation and determines that the top of the line is at the 234 th pixel . the image server retrieves the value for the “ left ” attribute from the xml representation and determines that the left of the line is at the 317 th pixel . the image server retrieves the value for the “ height ” attribute from the xml representation and determines that the height of the line is 55 pixels . the image server retrieves the value for the “ width ” attribute from the xml representation and determines that the width of the line is 142 pixels . the image server then draws the text “ image creator ” having a font of arial , having a size of 10 points , having a color of black , having a style of not bold , having a style of not italic , having a style of not underline , and having an alignment of left . because the objects were drawn on an image that is the width and height of the image creator ( 760 pixels wide and 570 pixels high ), the image server “ extract ” a 150 pixel wide by 150 pixel high rectangle from the image starting at the top and left positions the image occupied when the user created the image . lastly , as the response to microsoft internet explorer &# 39 ; s request for the image , the image server writes a value for the “ content - type ” header to the web server &# 39 ; s response stream . the actual value depends on what format the image has been rendered in . for an image in gif format , the value “ image / gif ” would be written as the value for the “ content - type ” header . for an image in jpg format , the value “ image / jpeg ” would be written as the value for the “ content - type ” header . then , the binary data of the extracted rectangle is written to the web server &# 39 ; s response stream . microsoft internet explorer displays the image on the web page . before this invention , if a user had an image that contained the text “ image creator ” with a font name of arial and a font size of 10 , and the user wanted the image to contain the text “ image server ” with a font name of “ tahoma ” and a font size of 12 , the user would have to create a copy of the image , make the necessary changes , then either overwrite the original image or save the modified image as a separate entity . with this invention , a user can create one image , and display it different ways simply by specifying parameter values in the image url used to retrieve the image from the image server .