Changeset 212 for GraphicTest
- Timestamp:
- Mar 20, 2011, 7:18:27 PM (14 years ago)
- Location:
- GraphicTest
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
GraphicTest/GraphicTest.lpi
r211 r212 42 42 </Item3> 43 43 </RequiredPackages> 44 <Units Count=" 47">44 <Units Count="51"> 45 45 <Unit0> 46 46 <Filename Value="GraphicTest.lpr"/> 47 47 <IsPartOfProject Value="True"/> 48 48 <UnitName Value="GraphicTest"/> 49 <EditorIndex Value="4"/>50 49 <WindowIndex Value="0"/> 51 50 <TopLine Value="1"/> 52 <CursorPos X="30" Y="8"/> 53 <UsageCount Value="43"/> 54 <Loaded Value="True"/> 51 <CursorPos X="51" Y="15"/> 52 <UsageCount Value="56"/> 55 53 </Unit0> 56 54 <Unit1> … … 60 58 <ResourceBaseClass Value="Form"/> 61 59 <UnitName Value="UMainForm"/> 60 <IsVisibleTab Value="True"/> 62 61 <EditorIndex Value="0"/> 63 62 <WindowIndex Value="0"/> 64 <TopLine Value=" 67"/>65 <CursorPos X=" 29" Y="71"/>66 <UsageCount Value=" 43"/>63 <TopLine Value="186"/> 64 <CursorPos X="3" Y="188"/> 65 <UsageCount Value="56"/> 67 66 <Loaded Value="True"/> 68 67 <LoadedDesigner Value="True"/> … … 74 73 <TopLine Value="1"/> 75 74 <CursorPos X="42" Y="22"/> 76 <UsageCount Value="1 6"/>75 <UsageCount Value="15"/> 77 76 </Unit2> 78 77 <Unit3> … … 80 79 <IsPartOfProject Value="True"/> 81 80 <UnitName Value="UPlatform"/> 82 <EditorIndex Value="13"/> 83 <WindowIndex Value="0"/> 84 <TopLine Value="43"/> 81 <WindowIndex Value="0"/> 82 <TopLine Value="1"/> 85 83 <CursorPos X="1" Y="1"/> 86 <UsageCount Value="43"/> 87 <Loaded Value="True"/> 84 <UsageCount Value="56"/> 88 85 </Unit3> 89 86 <Unit4> … … 93 90 <TopLine Value="244"/> 94 91 <CursorPos X="49" Y="262"/> 95 <UsageCount Value=" 10"/>92 <UsageCount Value="9"/> 96 93 </Unit4> 97 94 <Unit5> … … 101 98 <TopLine Value="121"/> 102 99 <CursorPos X="57" Y="142"/> 103 <UsageCount Value=" 10"/>100 <UsageCount Value="9"/> 104 101 </Unit5> 105 102 <Unit6> … … 108 105 <TopLine Value="85"/> 109 106 <CursorPos X="10" Y="102"/> 110 <UsageCount Value=" 10"/>107 <UsageCount Value="9"/> 111 108 </Unit6> 112 109 <Unit7> … … 115 112 <TopLine Value="153"/> 116 113 <CursorPos X="1" Y="160"/> 117 <UsageCount Value=" 10"/>114 <UsageCount Value="9"/> 118 115 </Unit7> 119 116 <Unit8> … … 123 120 <TopLine Value="1282"/> 124 121 <CursorPos X="15" Y="1299"/> 125 <UsageCount Value=" 10"/>122 <UsageCount Value="9"/> 126 123 </Unit8> 127 124 <Unit9> … … 130 127 <TopLine Value="546"/> 131 128 <CursorPos X="11" Y="553"/> 132 <UsageCount Value=" 10"/>129 <UsageCount Value="9"/> 133 130 </Unit9> 134 131 <Unit10> … … 137 134 <TopLine Value="389"/> 138 135 <CursorPos X="1" Y="411"/> 139 <UsageCount Value=" 7"/>136 <UsageCount Value="6"/> 140 137 </Unit10> 141 138 <Unit11> … … 144 141 <TopLine Value="444"/> 145 142 <CursorPos X="1" Y="461"/> 146 <UsageCount Value=" 10"/>143 <UsageCount Value="9"/> 147 144 </Unit11> 148 145 <Unit12> … … 151 148 <TopLine Value="14"/> 152 149 <CursorPos X="24" Y="21"/> 153 <UsageCount Value=" 10"/>150 <UsageCount Value="9"/> 154 151 </Unit12> 155 152 <Unit13> … … 158 155 <TopLine Value="313"/> 159 156 <CursorPos X="24" Y="316"/> 160 <UsageCount Value=" 10"/>157 <UsageCount Value="9"/> 161 158 </Unit13> 162 159 <Unit14> … … 165 162 <TopLine Value="149"/> 166 163 <CursorPos X="3" Y="151"/> 167 <UsageCount Value=" 10"/>164 <UsageCount Value="9"/> 168 165 </Unit14> 169 166 <Unit15> … … 173 170 <TopLine Value="171"/> 174 171 <CursorPos X="3" Y="188"/> 175 <UsageCount Value=" 9"/>172 <UsageCount Value="8"/> 176 173 </Unit15> 177 174 <Unit16> 178 175 <Filename Value="/usr/share/fpcsrc/2.4.0/rtl/inc/systemh.inc"/> 179 176 <WindowIndex Value="0"/> 180 <TopLine Value=" 243"/>181 <CursorPos X=" 3" Y="260"/>182 <UsageCount Value="1 0"/>177 <TopLine Value="496"/> 178 <CursorPos X="11" Y="519"/> 179 <UsageCount Value="13"/> 183 180 </Unit16> 184 181 <Unit17> … … 186 183 <IsPartOfProject Value="True"/> 187 184 <UnitName Value="UDrawMethod"/> 188 <IsVisibleTab Value="True"/> 189 <EditorIndex Value="3"/> 190 <WindowIndex Value="0"/> 191 <TopLine Value="157"/> 192 <CursorPos X="22" Y="168"/> 193 <UsageCount Value="37"/> 185 <EditorIndex Value="2"/> 186 <WindowIndex Value="0"/> 187 <TopLine Value="237"/> 188 <CursorPos X="29" Y="244"/> 189 <UsageCount Value="50"/> 194 190 <Loaded Value="True"/> 195 191 </Unit17> … … 198 194 <IsPartOfProject Value="True"/> 199 195 <UnitName Value="UFastBitmap"/> 200 <EditorIndex Value=" 2"/>201 <WindowIndex Value="0"/> 202 <TopLine Value=" 33"/>203 <CursorPos X=" 37" Y="66"/>204 <UsageCount Value=" 37"/>196 <EditorIndex Value="1"/> 197 <WindowIndex Value="0"/> 198 <TopLine Value="101"/> 199 <CursorPos X="19" Y="110"/> 200 <UsageCount Value="50"/> 205 201 <Loaded Value="True"/> 206 202 </Unit18> … … 210 206 <TopLine Value="292"/> 211 207 <CursorPos X="1" Y="308"/> 212 <UsageCount Value="1 3"/>208 <UsageCount Value="12"/> 213 209 </Unit19> 214 210 <Unit20> … … 218 214 <TopLine Value="279"/> 219 215 <CursorPos X="57" Y="292"/> 220 <UsageCount Value="1 1"/>216 <UsageCount Value="10"/> 221 217 </Unit20> 222 218 <Unit21> … … 226 222 <TopLine Value="133"/> 227 223 <CursorPos X="1" Y="146"/> 228 <UsageCount Value="1 1"/>224 <UsageCount Value="10"/> 229 225 </Unit21> 230 226 <Unit22> … … 234 230 <TopLine Value="584"/> 235 231 <CursorPos X="3" Y="597"/> 236 <UsageCount Value=" 10"/>232 <UsageCount Value="9"/> 237 233 </Unit22> 238 234 <Unit23> … … 241 237 <TopLine Value="32"/> 242 238 <CursorPos X="10" Y="45"/> 243 <UsageCount Value="1 2"/>239 <UsageCount Value="11"/> 244 240 </Unit23> 245 241 <Unit24> … … 248 244 <TopLine Value="51"/> 249 245 <CursorPos X="3" Y="53"/> 250 <UsageCount Value="1 2"/>246 <UsageCount Value="11"/> 251 247 </Unit24> 252 248 <Unit25> … … 256 252 <TopLine Value="1314"/> 257 253 <CursorPos X="31" Y="1327"/> 258 <UsageCount Value="1 2"/>254 <UsageCount Value="11"/> 259 255 </Unit25> 260 256 <Unit26> … … 263 259 <TopLine Value="1883"/> 264 260 <CursorPos X="10" Y="1896"/> 265 <UsageCount Value="1 2"/>261 <UsageCount Value="11"/> 266 262 </Unit26> 267 263 <Unit27> … … 270 266 <TopLine Value="75"/> 271 267 <CursorPos X="31" Y="88"/> 272 <UsageCount Value=" 10"/>268 <UsageCount Value="9"/> 273 269 </Unit27> 274 270 <Unit28> … … 277 273 <TopLine Value="309"/> 278 274 <CursorPos X="3" Y="311"/> 279 <UsageCount Value=" 9"/>275 <UsageCount Value="8"/> 280 276 </Unit28> 281 277 <Unit29> … … 285 281 <TopLine Value="24"/> 286 282 <CursorPos X="3" Y="37"/> 287 <UsageCount Value="1 1"/>283 <UsageCount Value="10"/> 288 284 </Unit29> 289 285 <Unit30> … … 293 289 <TopLine Value="271"/> 294 290 <CursorPos X="23" Y="292"/> 295 <UsageCount Value=" 10"/>291 <UsageCount Value="9"/> 296 292 </Unit30> 297 293 <Unit31> … … 301 297 <TopLine Value="1"/> 302 298 <CursorPos X="41" Y="62"/> 303 <UsageCount Value="1 9"/>299 <UsageCount Value="18"/> 304 300 </Unit31> 305 301 <Unit32> … … 309 305 <TopLine Value="23"/> 310 306 <CursorPos X="4" Y="35"/> 311 <UsageCount Value=" 9"/>307 <UsageCount Value="8"/> 312 308 </Unit32> 313 309 <Unit33> … … 316 312 <TopLine Value="1456"/> 317 313 <CursorPos X="1" Y="1471"/> 318 <UsageCount Value=" 9"/>314 <UsageCount Value="8"/> 319 315 </Unit33> 320 316 <Unit34> … … 323 319 <TopLine Value="780"/> 324 320 <CursorPos X="10" Y="793"/> 325 <UsageCount Value=" 9"/>321 <UsageCount Value="8"/> 326 322 </Unit34> 327 323 <Unit35> … … 331 327 <TopLine Value="217"/> 332 328 <CursorPos X="3" Y="219"/> 333 <UsageCount Value=" 9"/>329 <UsageCount Value="8"/> 334 330 </Unit35> 335 331 <Unit36> 336 332 <Filename Value="BGRABitmap/bgrabitmap.pas"/> 337 333 <UnitName Value="BGRABitmap"/> 338 <EditorIndex Value="9"/>339 334 <WindowIndex Value="0"/> 340 335 <TopLine Value="52"/> 341 336 <CursorPos X="23" Y="72"/> 342 <UsageCount Value="13"/> 343 <Loaded Value="True"/> 337 <UsageCount Value="18"/> 344 338 </Unit36> 345 339 <Unit37> 346 340 <Filename Value="BGRABitmap/bgragtkbitmap.pas"/> 347 341 <UnitName Value="BGRAGtkBitmap"/> 348 <EditorIndex Value="10"/>349 342 <WindowIndex Value="0"/> 350 343 <TopLine Value="29"/> 351 344 <CursorPos X="36" Y="36"/> 352 <UsageCount Value="13"/> 353 <Loaded Value="True"/> 345 <UsageCount Value="18"/> 354 346 </Unit37> 355 347 <Unit38> 356 348 <Filename Value="BGRABitmap/bgradefaultbitmap.pas"/> 357 349 <UnitName Value="BGRADefaultBitmap"/> 358 <EditorIndex Value="11"/>359 350 <WindowIndex Value="0"/> 360 351 <TopLine Value="3503"/> 361 352 <CursorPos X="31" Y="3506"/> 362 <UsageCount Value="13"/> 363 <Loaded Value="True"/> 353 <UsageCount Value="18"/> 364 354 </Unit38> 365 355 <Unit39> 366 356 <Filename Value="BGRABitmap/bgraresample.pas"/> 367 357 <UnitName Value="bgraresample"/> 368 <EditorIndex Value="12"/>369 358 <WindowIndex Value="0"/> 370 359 <TopLine Value="629"/> 371 360 <CursorPos X="30" Y="638"/> 372 <UsageCount Value="13"/> 373 <Loaded Value="True"/> 361 <UsageCount Value="18"/> 374 362 </Unit39> 375 363 <Unit40> 376 364 <Filename Value="../../../lazarus/components/opengl/glqtcontext.pas"/> 377 365 <UnitName Value="GLQTContext"/> 378 <EditorIndex Value="6"/>379 366 <WindowIndex Value="0"/> 380 367 <TopLine Value="1"/> 381 368 <CursorPos X="1" Y="1"/> 382 <UsageCount Value="13"/> 383 <Loaded Value="True"/> 369 <UsageCount Value="18"/> 384 370 </Unit40> 385 371 <Unit41> 386 372 <Filename Value="../../../lazarus/components/opengl/openglcontext.pas"/> 387 373 <UnitName Value="OpenGLContext"/> 388 <EditorIndex Value="7"/> 389 <WindowIndex Value="0"/> 390 <TopLine Value="387"/> 391 <CursorPos X="19" Y="389"/> 392 <UsageCount Value="13"/> 393 <Loaded Value="True"/> 374 <WindowIndex Value="0"/> 375 <TopLine Value="135"/> 376 <CursorPos X="34" Y="152"/> 377 <UsageCount Value="18"/> 394 378 </Unit41> 395 379 <Unit42> 396 380 <Filename Value="../../../lazarus/components/opengl/glgtkglxcontext.pas"/> 397 381 <UnitName Value="GLGtkGlxContext"/> 398 <EditorIndex Value="8"/> 399 <WindowIndex Value="0"/> 400 <TopLine Value="694"/> 401 <CursorPos X="3" Y="696"/> 402 <UsageCount Value="13"/> 403 <Loaded Value="True"/> 382 <WindowIndex Value="0"/> 383 <TopLine Value="699"/> 384 <CursorPos X="3" Y="704"/> 385 <UsageCount Value="18"/> 404 386 </Unit42> 405 387 <Unit43> 406 388 <Filename Value="/usr/share/fpcsrc/2.4.0/packages/opengl/src/gl.pp"/> 407 389 <UnitName Value="GL"/> 408 <EditorIndex Value=" 1"/>409 <WindowIndex Value="0"/> 410 <TopLine Value=" 821"/>411 <CursorPos X="3" Y=" 838"/>412 <UsageCount Value="1 2"/>390 <EditorIndex Value="3"/> 391 <WindowIndex Value="0"/> 392 <TopLine Value="1502"/> 393 <CursorPos X="3" Y="1499"/> 394 <UsageCount Value="18"/> 413 395 <Loaded Value="True"/> 414 396 </Unit43> 415 397 <Unit44> 416 398 <Filename Value="../../../lazarus/lcl/include/customform.inc"/> 417 <EditorIndex Value="5"/>418 399 <WindowIndex Value="0"/> 419 400 <TopLine Value="898"/> 420 401 <CursorPos X="38" Y="928"/> 421 <UsageCount Value="12"/> 422 <Loaded Value="True"/> 402 <UsageCount Value="17"/> 423 403 </Unit44> 424 404 <Unit45> … … 427 407 <TopLine Value="63"/> 428 408 <CursorPos X="43" Y="80"/> 429 <UsageCount Value=" 10"/>409 <UsageCount Value="9"/> 430 410 </Unit45> 431 411 <Unit46> … … 434 414 <TopLine Value="21"/> 435 415 <CursorPos X="1" Y="38"/> 436 <UsageCount Value=" 10"/>416 <UsageCount Value="9"/> 437 417 </Unit46> 418 <Unit47> 419 <Filename Value="/usr/share/fpcsrc/2.4.0/packages/opengl/src/glext.pp"/> 420 <UnitName Value="GLext"/> 421 <WindowIndex Value="0"/> 422 <TopLine Value="2783"/> 423 <CursorPos X="15" Y="2800"/> 424 <UsageCount Value="15"/> 425 </Unit47> 426 <Unit48> 427 <Filename Value="/usr/share/fpcsrc/2.4.0/rtl/i386/i386.inc"/> 428 <WindowIndex Value="0"/> 429 <TopLine Value="185"/> 430 <CursorPos X="11" Y="202"/> 431 <UsageCount Value="13"/> 432 </Unit48> 433 <Unit49> 434 <Filename Value="/usr/share/fpcsrc/2.4.0/rtl/inc/generic.inc"/> 435 <WindowIndex Value="0"/> 436 <TopLine Value="245"/> 437 <CursorPos X="3" Y="250"/> 438 <UsageCount Value="13"/> 439 </Unit49> 440 <Unit50> 441 <Filename Value="/usr/share/fpcsrc/2.4.0/rtl/inc/system.inc"/> 442 <WindowIndex Value="0"/> 443 <TopLine Value="188"/> 444 <CursorPos X="3" Y="190"/> 445 <UsageCount Value="13"/> 446 </Unit50> 438 447 </Units> 439 <JumpHistory Count=" 29" HistoryIndex="28">448 <JumpHistory Count="30" HistoryIndex="29"> 440 449 <Position1> 441 450 <Filename Value="UDrawMethod.pas"/> 442 <Caret Line=" 135" Column="3" TopLine="118"/>451 <Caret Line="248" Column="1" TopLine="224"/> 443 452 </Position1> 444 453 <Position2> 445 <Filename Value="U MainForm.pas"/>446 <Caret Line=" 48" Column="5" TopLine="31"/>454 <Filename Value="UDrawMethod.pas"/> 455 <Caret Line="250" Column="1" TopLine="224"/> 447 456 </Position2> 448 457 <Position3> 449 <Filename Value="U MainForm.pas"/>450 <Caret Line=" 196" Column="39" TopLine="176"/>458 <Filename Value="UDrawMethod.pas"/> 459 <Caret Line="251" Column="1" TopLine="224"/> 451 460 </Position3> 452 461 <Position4> 453 <Filename Value="U MainForm.pas"/>454 <Caret Line=" 103" Column="23" TopLine="77"/>462 <Filename Value="UDrawMethod.pas"/> 463 <Caret Line="254" Column="1" TopLine="226"/> 455 464 </Position4> 456 465 <Position5> 457 <Filename Value="U MainForm.pas"/>458 <Caret Line=" 92" Column="7" TopLine="77"/>466 <Filename Value="UDrawMethod.pas"/> 467 <Caret Line="256" Column="1" TopLine="228"/> 459 468 </Position5> 460 469 <Position6> 461 470 <Filename Value="UDrawMethod.pas"/> 462 <Caret Line=" 155" Column="7" TopLine="135"/>471 <Caret Line="257" Column="1" TopLine="229"/> 463 472 </Position6> 464 473 <Position7> 465 <Filename Value="U MainForm.pas"/>466 <Caret Line="1 77" Column="41" TopLine="167"/>474 <Filename Value="UDrawMethod.pas"/> 475 <Caret Line="105" Column="30" TopLine="98"/> 467 476 </Position7> 468 477 <Position8> 469 <Filename Value="U MainForm.pas"/>470 <Caret Line="2 01" Column="25" TopLine="182"/>478 <Filename Value="UDrawMethod.pas"/> 479 <Caret Line="260" Column="97" TopLine="233"/> 471 480 </Position8> 472 481 <Position9> 473 482 <Filename Value="UDrawMethod.pas"/> 474 <Caret Line=" 161" Column="72" TopLine="135"/>483 <Caret Line="237" Column="1" TopLine="218"/> 475 484 </Position9> 476 485 <Position10> 477 486 <Filename Value="UDrawMethod.pas"/> 478 <Caret Line=" 31" Column="23" TopLine="19"/>487 <Caret Line="224" Column="54" TopLine="207"/> 479 488 </Position10> 480 489 <Position11> 481 490 <Filename Value="UDrawMethod.pas"/> 482 <Caret Line=" 140" Column="1" TopLine="131"/>491 <Caret Line="237" Column="1" TopLine="220"/> 483 492 </Position11> 484 493 <Position12> 485 494 <Filename Value="UDrawMethod.pas"/> 486 <Caret Line=" 141" Column="3" TopLine="123"/>495 <Caret Line="240" Column="26" TopLine="223"/> 487 496 </Position12> 488 497 <Position13> 489 498 <Filename Value="UDrawMethod.pas"/> 490 <Caret Line=" 179" Column="17" TopLine="153"/>499 <Caret Line="237" Column="117" TopLine="220"/> 491 500 </Position13> 492 501 <Position14> 493 <Filename Value="U MainForm.pas"/>494 <Caret Line="2 04" Column="26" TopLine="174"/>502 <Filename Value="UDrawMethod.pas"/> 503 <Caret Line="240" Column="1" TopLine="224"/> 495 504 </Position14> 496 505 <Position15> 497 506 <Filename Value="UDrawMethod.pas"/> 498 <Caret Line=" 184" Column="44" TopLine="168"/>507 <Caret Line="281" Column="45" TopLine="263"/> 499 508 </Position15> 500 509 <Position16> 501 510 <Filename Value="UMainForm.pas"/> 502 <Caret Line=" 200" Column="88" TopLine="177"/>511 <Caret Line="145" Column="49" TopLine="130"/> 503 512 </Position16> 504 513 <Position17> 505 514 <Filename Value="UDrawMethod.pas"/> 506 <Caret Line="18 8" Column="5" TopLine="167"/>515 <Caret Line="182" Column="3" TopLine="173"/> 507 516 </Position17> 508 517 <Position18> 509 518 <Filename Value="UDrawMethod.pas"/> 510 <Caret Line=" 165" Column="29" TopLine="153"/>519 <Caret Line="257" Column="42" TopLine="243"/> 511 520 </Position18> 512 521 <Position19> 513 <Filename Value=" ../../../lazarus/lcl/include/customform.inc"/>514 <Caret Line=" 914" Column="40" TopLine="898"/>522 <Filename Value="UDrawMethod.pas"/> 523 <Caret Line="336" Column="18" TopLine="311"/> 515 524 </Position19> 516 525 <Position20> 517 526 <Filename Value="UDrawMethod.pas"/> 518 <Caret Line=" 164" Column="31" TopLine="156"/>527 <Caret Line="234" Column="38" TopLine="220"/> 519 528 </Position20> 520 529 <Position21> 521 <Filename Value="U DrawMethod.pas"/>522 <Caret Line="1 97" Column="5" TopLine="176"/>530 <Filename Value="UMainForm.pas"/> 531 <Caret Line="117" Column="26" TopLine="106"/> 523 532 </Position21> 524 533 <Position22> 525 534 <Filename Value="UMainForm.pas"/> 526 <Caret Line=" 92" Column="8" TopLine="68"/>535 <Caret Line="180" Column="3" TopLine="178"/> 527 536 </Position22> 528 537 <Position23> 529 538 <Filename Value="UMainForm.pas"/> 530 <Caret Line=" 96" Column="7" TopLine="68"/>539 <Caret Line="182" Column="9" TopLine="179"/> 531 540 </Position23> 532 541 <Position24> 533 <Filename Value="U DrawMethod.pas"/>534 <Caret Line="1 68" Column="8" TopLine="139"/>542 <Filename Value="UMainForm.pas"/> 543 <Caret Line="186" Column="92" TopLine="177"/> 535 544 </Position24> 536 545 <Position25> 537 <Filename Value=" ../../../lazarus/lcl/include/customform.inc"/>538 <Caret Line=" 919" Column="30" TopLine="898"/>546 <Filename Value="UMainForm.pas"/> 547 <Caret Line="183" Column="1" TopLine="177"/> 539 548 </Position25> 540 549 <Position26> 541 <Filename Value="U DrawMethod.pas"/>542 <Caret Line="1 62" Column="18" TopLine="147"/>550 <Filename Value="UMainForm.pas"/> 551 <Caret Line="184" Column="1" TopLine="177"/> 543 552 </Position26> 544 553 <Position27> 545 554 <Filename Value="UMainForm.pas"/> 546 <Caret Line=" 96" Column="1" TopLine="78"/>555 <Caret Line="140" Column="29" TopLine="133"/> 547 556 </Position27> 548 557 <Position28> 549 <Filename Value="U DrawMethod.pas"/>550 <Caret Line="1 84" Column="15" TopLine="164"/>558 <Filename Value="UMainForm.pas"/> 559 <Caret Line="142" Column="29" TopLine="135"/> 551 560 </Position28> 552 561 <Position29> 553 <Filename Value="U DrawMethod.pas"/>554 <Caret Line="1 94" Column="23" TopLine="177"/>562 <Filename Value="UMainForm.pas"/> 563 <Caret Line="141" Column="29" TopLine="134"/> 555 564 </Position29> 565 <Position30> 566 <Filename Value="UMainForm.pas"/> 567 <Caret Line="146" Column="20" TopLine="135"/> 568 </Position30> 556 569 </JumpHistory> 557 570 </ProjectOptions> -
GraphicTest/UDrawMethod.pas
r211 r212 8 8 Classes, SysUtils, StdCtrls, ExtCtrls, UPlatform, UFastBitmap, Graphics, 9 9 LCLType, IntfGraphics, fpImage, GraphType, BGRABitmap, BGRABitmapTypes, 10 LclIntf, GL, OpenGLContext;10 LclIntf, GL, GLExt, OpenGLContext; 11 11 12 12 type … … 30 30 OpenGLControl: TOpenGLControl; 31 31 TextureId: GLuint; 32 procedure Init; virtual; 32 33 constructor Create; virtual; 33 34 destructor Destroy; override; … … 102 103 procedure SetBitmap(const AValue: TBitmap); override; 103 104 constructor Create; override; 105 procedure Init; override; 104 106 destructor Destroy; override; 105 107 procedure DrawFrame(FastBitmap: TFastBitmap); override; 106 108 end; 107 109 110 { TOpenGLPBOMethod } 111 112 TOpenGLPBOMethod = class(TDrawMethod) 113 pboIds: array[0..1] of GLuint; 114 Index, NextIndex: Integer; 115 procedure SetBitmap(const AValue: TBitmap); override; 116 procedure Init; override; 117 constructor Create; override; 118 destructor Destroy; override; 119 procedure DrawFrame(FastBitmap: TFastBitmap); override; 120 end; 108 121 109 122 const 110 DrawMethodClasses: array[0.. 7] of TDrawMethodClass = (123 DrawMethodClasses: array[0..8] of TDrawMethodClass = ( 111 124 TCanvasPixels, TCanvasPixelsUpdateLock, TLazIntfImageColorsCopy, 112 125 TLazIntfImageColorsNoCopy, TBitmapRawImageData, TBitmapRawImageDataPaintBox, 113 TBGRABitmapPaintBox, TOpenGLMethod );126 TBGRABitmapPaintBox, TOpenGLMethod, TOpenGLPBOMethod); 114 127 115 128 implementation 129 130 { TOpenGLPBOMethod } 131 132 procedure TOpenGLPBOMethod.SetBitmap(const AValue: TBitmap); 133 begin 134 inherited SetBitmap(AValue); 135 end; 136 137 //procedure glGenBuffersARB2 : procedure(n : GLsizei; buffers : PGLuint); extdecl; 138 139 procedure TOpenGLPBOMethod.Init; 140 var 141 DataSize: Integer; 142 glExtensions: string; 143 begin 144 OpenGLControl.MakeCurrent; 145 DataSize := OpenGLControl.Width * OpenGLControl.Height * SizeOf(Integer); 146 // glGenBuffersARB(Length(pboIds), PGLuint(pboIds)); 147 //if glext_LoadExtension('GL_ARB_pixel_buffer_object') then 148 if Load_GL_ARB_vertex_buffer_object then begin 149 glGenBuffersARB(2, @pboIds); 150 glBindBufferARB(GL_PIXEL_PACK_BUFFER_ARB, pboIds[0]); 151 glBufferDataARB(GL_PIXEL_PACK_BUFFER_ARB, DataSize, Pointer(0), GL_STREAM_READ_ARB); 152 glBindBufferARB(GL_PIXEL_PACK_BUFFER_ARB, pboIds[1]); 153 glBufferDataARB(GL_PIXEL_PACK_BUFFER_ARB, DataSize, Pointer(0), GL_STREAM_READ_ARB); 154 155 end else raise Exception.Create('GL_ARB_pixel_buffer_object not supported'); 156 157 glEnable(GL_TEXTURE_2D); 158 glBindTexture(GL_TEXTURE_2D, TextureId); 159 //glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); 160 //glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); 161 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); 162 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); 163 glTexImage2D(GL_TEXTURE_2D, 0, 4, OpenGLControl.Width, OpenGLControl.Height, 164 0, GL_RGBA, GL_UNSIGNED_BYTE, OpenGLBitmap); 165 end; 166 167 constructor TOpenGLPBOMethod.Create; 168 begin 169 inherited Create; 170 Caption := 'OpenGL PBO'; 171 PaintObject := poOpenGL; 172 // SetLength(pboIds, 2); 173 Index := 0; 174 NextIndex := 1; 175 end; 176 177 destructor TOpenGLPBOMethod.Destroy; 178 begin 179 inherited Destroy; 180 end; 181 182 procedure TOpenGLPBOMethod.DrawFrame(FastBitmap: TFastBitmap); 183 var 184 X, Y: Integer; 185 P: PInteger; 186 R: PInteger; 187 Ptr: ^GLubyte; 188 TextureShift: TPoint; 189 TextureShift2: TPoint; 190 const 191 GL_CLAMP_TO_EDGE = $812F; 192 begin 193 // "index" is used to read pixels from framebuffer to a PBO 194 // "nextIndex" is used to update pixels in the other PBO 195 Index := (Index + 1) mod 2; 196 NextIndex := (Index + 1) mod 2; 197 198 glLoadIdentity; 199 200 glBindTexture(GL_TEXTURE_2D, TextureId); 201 //glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); 202 //glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); 203 //glTexImage2D(GL_TEXTURE_2D, 0, 4, OpenGLControl.Width, OpenGLControl.Height, 204 // 0, GL_RGBA, GL_UNSIGNED_BYTE, OpenGLBitmap); 205 //glTexImage2D(GL_TEXTURE_2D, 0, 4, 512, 256, 206 //0, GL_RGBA, GL_UNSIGNED_BYTE, OpenGLBitmap); 207 208 // bind the texture and PBO 209 //glBindTexture(GL_TEXTURE_2D, textureId); 210 glBindBufferARB(GL_PIXEL_UNPACK_BUFFER_ARB, pboIds[index]); 211 212 // copy pixels from PBO to texture object 213 // Use offset instead of ponter. 214 glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, OpenGLControl.Width, OpenGLControl.Height, 215 GL_BGRA, GL_UNSIGNED_BYTE, Pointer(0)); 216 217 218 // bind PBO to update texture source 219 glBindBufferARB(GL_PIXEL_UNPACK_BUFFER_ARB, pboIds[nextIndex]); 220 221 // Note that glMapBufferARB() causes sync issue. 222 // If GPU is working with this buffer, glMapBufferARB() will wait(stall) 223 // until GPU to finish its job. To avoid waiting (idle), you can call 224 // first glBufferDataARB() with NULL pointer before glMapBufferARB(). 225 // If you do that, the previous data in PBO will be discarded and 226 // glMapBufferARB() returns a new allocated pointer immediately 227 // even if GPU is still working with the previous data. 228 glBufferDataARB(GL_PIXEL_UNPACK_BUFFER_ARB, OpenGLControl.Width * OpenGLControl.Height * SizeOf(Integer), Pointer(0), GL_STREAM_DRAW_ARB); 229 230 // map the buffer object into client's memory 231 ptr := glMapBufferARB(GL_PIXEL_UNPACK_BUFFER_ARB, GL_WRITE_ONLY_ARB); 232 if Assigned(ptr) then begin 233 // update data directly on the mapped buffer 234 P := PInteger(Ptr); 235 with FastBitmap do 236 for Y := 0 to Size.Y - 2 do begin 237 R := P; 238 for X := 0 to Size.X - 1 do begin 239 R^ := NoSwapBRComponent(Pixels[X, Y]) or $ff000000; 240 Inc(R); 241 end; 242 Inc(P, Size.X); 243 end; 244 glUnmapBufferARB(GL_PIXEL_PACK_BUFFER_ARB); 245 end; 246 247 // it is good idea to release PBOs with ID 0 after use. 248 // Once bound with 0, all pixel operations are back to normal ways. 249 glBindBufferARB(GL_PIXEL_UNPACK_BUFFER_ARB, 0); 250 251 glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT); 252 //glRotatef(30.0, 0, 0, 1.0); 253 glTranslatef(-OpenGLControl.Width / 2, -OpenGLControl.Height / 2, 0.0); 254 glBindTexture(GL_TEXTURE_2D, TextureId); 255 256 TextureShift := Point(0, 0); 257 TextureShift2 := Point(0, 0); 258 glBegin(GL_QUADS); 259 glColor3ub(255, 255, 255); 260 glTexCoord2f(TextureShift.X, TextureShift.Y); 261 glVertex3f(TextureShift2.X, TextureShift2.Y, 0); 262 glTexCoord2f(TextureShift.X + OpenGLControl.Width div 2, TextureShift.Y); 263 glVertex3f(TextureShift2.X + OpenGLControl.Width, TextureShift2.Y, 0); 264 glTexCoord2f(TextureShift.X + OpenGLControl.Width div 2, TextureShift.Y + OpenGLControl.Height div 2); 265 glVertex3f(TextureShift2.X + OpenGLControl.Width, TextureShift2.Y + OpenGLControl.Height, 0); 266 glTexCoord2f(TextureShift.X, TextureShift.Y + OpenGLControl.Height div 2); 267 glVertex3f(TextureShift2.X, TextureShift2.Y + OpenGLControl.Height, 0); 268 glEnd(); 269 270 OpenGLControl.SwapBuffers; 271 end; 116 272 117 273 { TOpenGLMethod } … … 127 283 Caption := 'OpenGL'; 128 284 PaintObject := poOpenGL; 285 end; 286 287 procedure TOpenGLMethod.Init; 288 begin 289 inherited Init; 290 //OpenGLControl.MakeCurrent; 129 291 end; 130 292 … … 142 304 GL_CLAMP_TO_EDGE = $812F; 143 305 begin 144 (* glEnable(GL_TEXTURE_2D); // enables 2d textures 145 glClearColor(0.0,0.0,0.0,1.0); // sets background color 146 glClearDepth(1.0); 147 glDepthFunc(GL_LEQUAL); // the type of depth test to do 148 glEnable(GL_DEPTH_TEST); // enables depth testing 149 glShadeModel(GL_SMOOTH); // enables smooth color shading 150 {blending} 151 glColor4f(1.0,1.0,1.0,0.5); // Full Brightness, 50% Alpha ( NEW ) 152 glBlendFunc(GL_SRC_ALPHA, GL_ONE); 153 glLightModeli(GL_LIGHT_MODEL_LOCAL_VIEWER, GL_TRUE); 154 *) 155 306 glLoadIdentity; 156 307 glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT); 157 308 //glLoadIdentity; { clear the matrix } 158 309 //glTranslatef(0.0, 0.0, -3.0); // -2.5); { viewing transformation } 159 160 //glLoadIdentity; { clear the matrix }161 310 162 311 P := OpenGLBitmap; … … 172 321 end; 173 322 174 glLoadIdentity;175 323 //glRotatef(30.0, 0, 0, 1.0); 176 324 glTranslatef(-OpenGLControl.Width div 2, -OpenGLControl.Height div 2, 0.0); … … 459 607 end; 460 608 609 procedure TDrawMethod.Init; 610 begin 611 612 end; 613 461 614 constructor TDrawMethod.Create; 462 615 begin -
GraphicTest/UFastBitmap.pas
r206 r212 33 33 end; 34 34 35 { TFastBitmap3 } 36 37 TFastBitmap3 = class 38 private 39 FPixelsData: PByte; 40 FSize: TPoint; 41 procedure SetSize(const AValue: TPoint); 42 public 43 constructor Create; 44 destructor Destroy; override; 45 procedure RandomImage; 46 property Size: TPoint read FSize write SetSize; 47 function GetPixelAddress(X, Y: Integer): PFastBitmapPixel; inline; 48 function GetPixelSize: Integer; inline; 49 end; 50 35 51 TFastBitmap2 = class 36 52 private … … 64 80 end; 65 81 82 { TFastBitmap3 } 83 84 procedure TFastBitmap3.SetSize(const AValue: TPoint); 85 begin 86 if (FSize.X = AValue.X) and (FSize.Y = AValue.X) then Exit; 87 FSize := AValue; 88 FPixelsData := ReAllocMem(FPixelsData, FSize.X * FSize.Y * SizeOf(TFastBitmapPixel)); 89 end; 90 91 constructor TFastBitmap3.Create; 92 begin 93 94 end; 95 96 destructor TFastBitmap3.Destroy; 97 begin 98 inherited Destroy; 99 end; 100 101 procedure TFastBitmap3.RandomImage; 102 var 103 I, X, Y: Integer; 104 PRow: PFastBitmapPixel; 105 PPixel: PFastBitmapPixel; 106 begin 107 for I := 0 to 2 do begin 108 PRow := GetPixelAddress(I * (Size.X div 3), 0); 109 for Y := 0 to (Size.Y div 2) - 1 do begin 110 PPixel := PRow; 111 for X := 0 to (Size.X div 3) - 1 do begin 112 PPixel^ := 255 shl (I * 8); 113 Inc(PPixel); 114 end; 115 Inc(PRow, Size.X); 116 end; 117 end; 118 119 PRow := GetPixelAddress(0, Size.Y div 2); 120 for Y := (Size.Y div 2) to Size.Y - 1 do begin 121 PPixel := PRow; 122 for X := 0 to Size.X - 1 do begin 123 PPixel^ := Random(256) or (Random(256) shl 16) or (Random(256) shl 8); 124 Inc(PPixel); 125 end; 126 Inc(PRow, Size.X); 127 end; 128 end; 129 130 function TFastBitmap3.GetPixelAddress(X, Y: Integer): PFastBitmapPixel; 131 begin 132 Result := PFastBitmapPixel(FPixelsData) + Y * FSize.X + X; 133 end; 134 135 function TFastBitmap3.GetPixelSize: Integer; 136 begin 137 Result := SizeOf(TFastBitmapPixel); 138 end; 139 66 140 { TFastBitmap2 } 67 141 -
GraphicTest/UMainForm.lfm
r211 r212 1 1 object MainForm: TMainForm 2 2 Left = 214 3 Height = 3 383 Height = 393 4 4 Top = 106 5 5 Width = 680 6 6 Caption = 'Graphic test' 7 ClientHeight = 3 387 ClientHeight = 393 8 8 ClientWidth = 680 9 9 OnClose = FormClose … … 13 13 object PageControl1: TPageControl 14 14 Left = 312 15 Height = 3 1815 Height = 373 16 16 Top = 16 17 17 Width = 365 … … 22 22 object TabSheet1: TTabSheet 23 23 Caption = 'TImage' 24 ClientHeight = 29124 ClientHeight = 346 25 25 ClientWidth = 361 26 26 object Image1: TImage … … 34 34 object TabSheet2: TTabSheet 35 35 Caption = 'TPaintBox' 36 ClientHeight = 29136 ClientHeight = 346 37 37 ClientWidth = 361 38 38 object PaintBox1: TPaintBox … … 101 101 object ListView1: TListView 102 102 Left = 8 103 Height = 166104 Top = 1 68103 Height = 253 104 Top = 136 105 105 Width = 296 106 106 Anchors = [akTop, akLeft, akBottom] … … 122 122 end 123 123 object ButtonBenchmark: TButton 124 Left = 9124 Left = 229 125 125 Height = 25 126 Top = 1 36126 Top = 101 127 127 Width = 75 128 128 Caption = 'Benchmark' … … 147 147 ParentColor = False 148 148 end 149 object FloatSpinEdit1: TFloatSpinEdit 150 Left = 175 151 Height = 21 152 Top = 103 153 Width = 50 154 Increment = 1 155 MaxValue = 100 156 MinValue = 0 157 TabOrder = 6 158 Value = 1 159 end 149 160 object Timer1: TTimer 161 Interval = 500 150 162 OnTimer = Timer1Timer 151 163 left = 209 -
GraphicTest/UMainForm.pas
r211 r212 8 8 Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ComCtrls, 9 9 ExtCtrls, StdCtrls, DateUtils, UPlatform, LCLType, IntfGraphics, fpImage, 10 Math, GraphType, Contnrs, LclIntf, UFastBitmap, UDrawMethod, GL, OpenGLContext; 10 Math, GraphType, Contnrs, LclIntf, Spin, UFastBitmap, UDrawMethod, GL, 11 OpenGLContext; 11 12 12 13 const … … 23 24 ButtonStop: TButton; 24 25 ComboBox1: TComboBox; 26 FloatSpinEdit1: TFloatSpinEdit; 25 27 Image1: TImage; 26 28 Label1: TLabel; … … 47 49 TextureId: GLuint; 48 50 TextureData: Pointer; 51 MethodIndex: Integer; 49 52 procedure OpenGLControl1Resize(Sender: TObject); 50 53 procedure InitGL; … … 104 107 NewDrawMethod.OpenGLBitmap := TextureData; 105 108 NewDrawMethod.OpenGLControl := OpenGLControl1; 109 NewDrawMethod.Init; 106 110 DrawMethods.Add(NewDrawMethod); 107 111 ComboBox1.Items.Add(NewDrawMethod.Caption); … … 112 116 procedure TMainForm.ButtonStartClick(Sender: TObject); 113 117 begin 118 MethodIndex := ComboBox1.ItemIndex; 114 119 ButtonStop.Enabled := True; 115 120 ButtonStart.Enabled := False; 116 121 Timer1.Enabled := True; 117 if ComboBox1.ItemIndex >= 0 then118 with TDrawMethod(DrawMethods[ ComboBox1.ItemIndex]) do begin122 if MethodIndex >= 0 then 123 with TDrawMethod(DrawMethods[MethodIndex]) do begin 119 124 PageControl1.TabIndex := Integer(PaintObject); 120 125 Application.ProcessMessages; … … 132 137 NewItem: TListItem; 133 138 I: Integer; 134 begin 139 C: Integer; 140 StartTime: TDateTime; 141 begin 142 Timer1.Enabled := True; 135 143 with ListView1, Items do 136 144 try 137 BeginUpdate;145 //BeginUpdate; 138 146 Clear; 139 147 for I := 0 to DrawMethods.Count - 1 do 140 148 with TDrawMethod(DrawMethods[I]) do begin 149 MethodIndex := I; 141 150 PageControl1.TabIndex := Integer(PaintObject); 142 Application.ProcessMessages; 143 DrawFrameTiming(TFastBitmap(Scenes[0])); 144 Application.ProcessMessages; 145 DrawFrameTiming(TFastBitmap(Scenes[0])); 151 StartTime := NowPrecise; 152 repeat 153 DrawFrameTiming(TFastBitmap(Scenes[SceneIndex])); 154 SceneIndex := (SceneIndex + 1) mod Scenes.Count; 155 Application.ProcessMessages; 156 until (NowPrecise - StartTime) > OneSecond * FloatSpinEdit1.Value; 146 157 NewItem := Add; 147 158 NewItem.Caption := Caption; … … 150 161 end; 151 162 finally 152 EndUpdate;163 //EndUpdate; 153 164 end; 154 165 end; … … 175 186 procedure TMainForm.Timer1Timer(Sender: TObject); 176 187 begin 177 if ( ComboBox1.ItemIndex >= 0) then178 with TDrawMethod(DrawMethods[ ComboBox1.ItemIndex]) do begin188 if (MethodIndex >= 0) then 189 with TDrawMethod(DrawMethods[MethodIndex]) do begin 179 190 if (FrameDuration > 0) then 180 191 Label2.Caption := FloatToStr(RoundTo(1 / (FrameDuration / OneSecond), -3)) … … 194 205 glLoadIdentity; 195 206 glOrtho(0, OpenGLControl1.Width, OpenGLControl1.Height, 0, 0, 1); 207 // glOrtho(0, 1, 1, 0, 0, 1); 196 208 glMatrixMode(GL_MODELVIEW); 197 209 glLoadIdentity();
Note:
See TracChangeset
for help on using the changeset viewer.