6 String printingDocumentName;
8 public void SetPrintingDocumentName(String name)
10 printingDocumentName = name;
13 public class DisplaySystemResPtr : struct
15 DisplaySystemResPtr prev, next;
19 #if !defined(ECERE_VANILLA) && !defined(ECERE_NO3D)
20 static void FreeTexture(NamedLink texture)
22 Bitmap bitmap = texture.data;
28 static void FreeMaterial(Material material)
34 public class DisplaySystem
40 #if !defined(ECERE_VANILLA) && !defined(ECERE_NO3D)
43 materials.Free(Material::Free);
44 textures.Free(FreeTexture);
45 for(mesh = meshes.first; mesh; mesh = mesh.next)
46 ((Mesh)mesh.data).Free(0);
51 driver.DestroyDisplaySystem(this);
53 if(driver.displaySystem == this)
54 driver.displaySystem = null;
57 bool Create(const char * driverName, void * window, bool fullScreen)
60 subclass(DisplayDriver) displayDriver = GetDisplayDriver(driverName);
63 flags.fullScreen = fullScreen;
65 if(displayDriver.CreateDisplaySystem(this))
68 driver = displayDriver;
71 // LogErrorCode(GERR_DISPLAY_INIT_FAILED, driver);
72 displayDriver.displaySystem = null;
74 else if(!displayDriver.displaySystem)
76 displayDriver.displaySystem = this;
82 Font LoadFont(const char * faceName, float size, FontFlags flags)
85 subclass(DisplayDriver) driver = this ? this.driver : ((subclass(DisplayDriver))class(LFBDisplayDriver));
86 char * string = CopyString(faceName);
90 int numFonts = TokenizeWith(string, 32, fonts, ",", true);
92 for(c = 0; c<numFonts; c++)
94 TrimLSpaces(fonts[c],fonts[c]);
95 TrimRSpaces(fonts[c],fonts[c]);
96 if((result = driver.LoadFont(this, fonts[c], size, flags)))
106 void UnloadFont(Font font)
108 subclass(DisplayDriver) driver = this ? this.driver : ((subclass(DisplayDriver))class(LFBDisplayDriver));
109 driver.UnloadFont(this, font);
112 void FontExtent(Font font, const char * text, int len, int * width, int * height)
115 driver.FontExtent(this, font, text, len, width, height);
118 if(width) *width = 0;
119 if(height) *height = 0;
123 void * LoadResource(Resource resource)
125 DisplaySystemResPtr res;
126 for(res = resources.first; res; res = res.next)
128 Resource existing = res.resource;
130 if(existing._class == resource._class)
132 if(resource.OnCompare(existing) == 0)
138 // res = DisplaySystemResPtr { resource = new classof(resource) };
139 res = DisplaySystemResPtr { resource = eInstance_New(resource._class) };
142 // This will load e.g. the Bitmap *
143 res.resource.Load(resource, this);
145 // This would copy e.g. the Bitmap *
147 resource.Reference(res.resource);
152 void UnloadResource(Resource resource, DisplaySystemResPtr res)
154 // This would clear e.g. the Bitmap *
155 resource.Dereference();
158 if(res.resource._refCount == 1)
161 resources.Delete(res);
164 res.resource._refCount--;
174 result = driver.LockSystem(this);
185 driver.UnlockSystem(this);
189 #if !defined(ECERE_VANILLA) && !defined(ECERE_NO3D)
190 // --- Materials List Management ---
192 Material AddNamedMaterial(const char * name)
194 Material material = materials.FindName(name, false);
197 material = Material { };
200 material.name = CopyString(name);
202 materials.AddName(material);
204 materials.Add(material);
210 bool AddMaterial(Material material)
213 materials.AddName(material);
215 materials.Add(material);
219 Material GetMaterial(const char * name)
221 return materials.FindName(name, false);
224 bool RemoveMaterial(Material material)
226 delete material.name;
227 materials.Delete(material);
231 void ClearMaterials()
233 materials.Free(FreeMaterial);
236 // --- Textures List Management ---
238 NamedLink AddTexture(const char * name, Bitmap bitmap)
245 item.name = new char[strlen(name) + 1];
246 strcpy(item.name, name);
247 textures.AddName(item);
252 Bitmap GetTexture(const char * name)
254 return textures.FindNamedLink(name, false);
257 bool RemoveTexture(const char * name)
259 NamedLink item = textures.FindName(name, false);
263 textures.Delete(item);
271 textures.Free(FreeTexture);
274 // --- Meshes List Management ---
276 OldLink AddMesh(Mesh mesh)
284 mesh.displaySystem = this;
292 bool RemoveMesh(Mesh mesh)
294 OldLink item = meshes.FindLink(mesh);
307 for(mesh = meshes.first; mesh; mesh = mesh.next)
308 ((Mesh)mesh.data).Free(0);
314 subclass(DisplayDriver) driver;
317 public PixelFormat pixelFormat;
318 public DisplayFlags flags;
323 #if !defined(ECERE_VANILLA) && !defined(ECERE_NO3D)
324 // This will all go in resources