@@ -302,7 +302,37 @@ def test_copy(self):
302
302
image2 = image .copy ()
303
303
self .assertEqual (image2 .width (), 16 )
304
304
self .assertEqual (image2 .height (), 16 )
305
- self .assertEqual (image .get (4 , 6 ), image .get (4 , 6 ))
305
+ self .assertEqual (image2 .get (4 , 6 ), image .get (4 , 6 ))
306
+
307
+ image2 = image .copy (from_coords = (2 , 3 , 14 , 11 ))
308
+ self .assertEqual (image2 .width (), 12 )
309
+ self .assertEqual (image2 .height (), 8 )
310
+ self .assertEqual (image2 .get (0 , 0 ), image .get (2 , 3 ))
311
+ self .assertEqual (image2 .get (11 , 7 ), image .get (13 , 10 ))
312
+ self .assertEqual (image2 .get (2 , 4 ), image .get (2 + 2 , 4 + 3 ))
313
+
314
+ image2 = image .copy (from_coords = (2 , 3 , 14 , 11 ), zoom = 2 )
315
+ self .assertEqual (image2 .width (), 24 )
316
+ self .assertEqual (image2 .height (), 16 )
317
+ self .assertEqual (image2 .get (0 , 0 ), image .get (2 , 3 ))
318
+ self .assertEqual (image2 .get (23 , 15 ), image .get (13 , 10 ))
319
+ self .assertEqual (image2 .get (2 * 2 , 4 * 2 ), image .get (2 + 2 , 4 + 3 ))
320
+ self .assertEqual (image2 .get (2 * 2 + 1 , 4 * 2 + 1 ), image .get (6 + 2 , 2 + 3 ))
321
+
322
+ image2 = image .copy (from_coords = (2 , 3 , 14 , 11 ), subsample = 2 )
323
+ self .assertEqual (image2 .width (), 6 )
324
+ self .assertEqual (image2 .height (), 4 )
325
+ self .assertEqual (image2 .get (0 , 0 ), image .get (2 , 3 ))
326
+ self .assertEqual (image2 .get (5 , 3 ), image .get (12 , 9 ))
327
+ self .assertEqual (image2 .get (3 , 2 ), image .get (3 * 2 + 2 , 2 * 2 + 3 ))
328
+
329
+ image2 = image .copy (from_coords = (2 , 3 , 14 , 11 ), subsample = 2 , zoom = 3 )
330
+ self .assertEqual (image2 .width (), 18 )
331
+ self .assertEqual (image2 .height (), 12 )
332
+ self .assertEqual (image2 .get (0 , 0 ), image .get (2 , 3 ))
333
+ self .assertEqual (image2 .get (17 , 11 ), image .get (12 , 9 ))
334
+ self .assertEqual (image2 .get (1 * 3 , 2 * 3 ), image .get (1 * 2 + 2 , 2 * 2 + 3 ))
335
+ self .assertEqual (image2 .get (1 * 3 + 2 , 2 * 3 + 2 ), image .get (1 * 2 + 2 , 2 * 2 + 3 ))
306
336
307
337
def test_subsample (self ):
308
338
image = self .create ()
@@ -316,6 +346,13 @@ def test_subsample(self):
316
346
self .assertEqual (image2 .height (), 8 )
317
347
self .assertEqual (image2 .get (2 , 3 ), image .get (4 , 6 ))
318
348
349
+ image2 = image .subsample (2 , from_coords = (2 , 3 , 14 , 11 ))
350
+ self .assertEqual (image2 .width (), 6 )
351
+ self .assertEqual (image2 .height (), 4 )
352
+ self .assertEqual (image2 .get (0 , 0 ), image .get (2 , 3 ))
353
+ self .assertEqual (image2 .get (5 , 3 ), image .get (12 , 9 ))
354
+ self .assertEqual (image2 .get (1 , 2 ), image .get (1 * 2 + 2 , 2 * 2 + 3 ))
355
+
319
356
def test_zoom (self ):
320
357
image = self .create ()
321
358
image2 = image .zoom (2 , 3 )
@@ -330,6 +367,118 @@ def test_zoom(self):
330
367
self .assertEqual (image2 .get (8 , 12 ), image .get (4 , 6 ))
331
368
self .assertEqual (image2 .get (9 , 13 ), image .get (4 , 6 ))
332
369
370
+ image2 = image .zoom (2 , from_coords = (2 , 3 , 14 , 11 ))
371
+ self .assertEqual (image2 .width (), 24 )
372
+ self .assertEqual (image2 .height (), 16 )
373
+ self .assertEqual (image2 .get (0 , 0 ), image .get (2 , 3 ))
374
+ self .assertEqual (image2 .get (23 , 15 ), image .get (13 , 10 ))
375
+ self .assertEqual (image2 .get (2 * 2 , 4 * 2 ), image .get (2 + 2 , 4 + 3 ))
376
+ self .assertEqual (image2 .get (2 * 2 + 1 , 4 * 2 + 1 ), image .get (6 + 2 , 2 + 3 ))
377
+
378
+ def test_copy_replace (self ):
379
+ image = self .create ()
380
+ image2 = tkinter .PhotoImage (master = self .root )
381
+ image2 .copy_replace (image )
382
+ self .assertEqual (image2 .width (), 16 )
383
+ self .assertEqual (image2 .height (), 16 )
384
+ self .assertEqual (image2 .get (4 , 6 ), image .get (4 , 6 ))
385
+
386
+ image2 = tkinter .PhotoImage (master = self .root )
387
+ image2 .copy_replace (image , from_coords = (2 , 3 , 14 , 11 ))
388
+ self .assertEqual (image2 .width (), 12 )
389
+ self .assertEqual (image2 .height (), 8 )
390
+ self .assertEqual (image2 .get (0 , 0 ), image .get (2 , 3 ))
391
+ self .assertEqual (image2 .get (11 , 7 ), image .get (13 , 10 ))
392
+ self .assertEqual (image2 .get (2 , 4 ), image .get (2 + 2 , 4 + 3 ))
393
+
394
+ image2 = tkinter .PhotoImage (master = self .root )
395
+ image2 .copy_replace (image )
396
+ image2 .copy_replace (image , from_coords = (2 , 3 , 14 , 11 ), shrink = True )
397
+ self .assertEqual (image2 .width (), 12 )
398
+ self .assertEqual (image2 .height (), 8 )
399
+ self .assertEqual (image2 .get (0 , 0 ), image .get (2 , 3 ))
400
+ self .assertEqual (image2 .get (11 , 7 ), image .get (13 , 10 ))
401
+ self .assertEqual (image2 .get (2 , 4 ), image .get (2 + 2 , 4 + 3 ))
402
+
403
+ image2 = tkinter .PhotoImage (master = self .root )
404
+ image2 .copy_replace (image , from_coords = (2 , 3 , 14 , 11 ), to = (3 , 6 ))
405
+ self .assertEqual (image2 .width (), 15 )
406
+ self .assertEqual (image2 .height (), 14 )
407
+ self .assertEqual (image2 .get (0 + 3 , 0 + 6 ), image .get (2 , 3 ))
408
+ self .assertEqual (image2 .get (11 + 3 , 7 + 6 ), image .get (13 , 10 ))
409
+ self .assertEqual (image2 .get (2 + 3 , 4 + 6 ), image .get (2 + 2 , 4 + 3 ))
410
+
411
+ image2 = tkinter .PhotoImage (master = self .root )
412
+ image2 .copy_replace (image , from_coords = (2 , 3 , 14 , 11 ), to = (0 , 0 , 100 , 50 ))
413
+ self .assertEqual (image2 .width (), 100 )
414
+ self .assertEqual (image2 .height (), 50 )
415
+ self .assertEqual (image2 .get (0 , 0 ), image .get (2 , 3 ))
416
+ self .assertEqual (image2 .get (11 , 7 ), image .get (13 , 10 ))
417
+ self .assertEqual (image2 .get (2 , 4 ), image .get (2 + 2 , 4 + 3 ))
418
+ self .assertEqual (image2 .get (2 + 12 , 4 + 8 ), image .get (2 + 2 , 4 + 3 ))
419
+ self .assertEqual (image2 .get (2 + 12 * 2 , 4 ), image .get (2 + 2 , 4 + 3 ))
420
+ self .assertEqual (image2 .get (2 , 4 + 8 * 3 ), image .get (2 + 2 , 4 + 3 ))
421
+
422
+ image2 = tkinter .PhotoImage (master = self .root )
423
+ image2 .copy_replace (image , from_coords = (2 , 3 , 14 , 11 ), zoom = 2 )
424
+ self .assertEqual (image2 .width (), 24 )
425
+ self .assertEqual (image2 .height (), 16 )
426
+ self .assertEqual (image2 .get (0 , 0 ), image .get (2 , 3 ))
427
+ self .assertEqual (image2 .get (23 , 15 ), image .get (13 , 10 ))
428
+ self .assertEqual (image2 .get (2 * 2 , 4 * 2 ), image .get (2 + 2 , 4 + 3 ))
429
+ self .assertEqual (image2 .get (2 * 2 + 1 , 4 * 2 + 1 ), image .get (6 + 2 , 2 + 3 ))
430
+
431
+ image2 = tkinter .PhotoImage (master = self .root )
432
+ image2 .copy_replace (image , from_coords = (2 , 3 , 14 , 11 ), subsample = 2 )
433
+ self .assertEqual (image2 .width (), 6 )
434
+ self .assertEqual (image2 .height (), 4 )
435
+ self .assertEqual (image2 .get (0 , 0 ), image .get (2 , 3 ))
436
+ self .assertEqual (image2 .get (5 , 3 ), image .get (12 , 9 ))
437
+ self .assertEqual (image2 .get (1 , 2 ), image .get (1 * 2 + 2 , 2 * 2 + 3 ))
438
+
439
+ image2 = tkinter .PhotoImage (master = self .root )
440
+ image2 .copy_replace (image , from_coords = (2 , 3 , 14 , 11 ), subsample = 2 , zoom = 3 )
441
+ self .assertEqual (image2 .width (), 18 )
442
+ self .assertEqual (image2 .height (), 12 )
443
+ self .assertEqual (image2 .get (0 , 0 ), image .get (2 , 3 ))
444
+ self .assertEqual (image2 .get (17 , 11 ), image .get (12 , 9 ))
445
+ self .assertEqual (image2 .get (3 * 3 , 2 * 3 ), image .get (3 * 2 + 2 , 2 * 2 + 3 ))
446
+ self .assertEqual (image2 .get (3 * 3 + 2 , 2 * 3 + 2 ), image .get (3 * 2 + 2 , 2 * 2 + 3 ))
447
+ self .assertEqual (image2 .get (1 * 3 , 2 * 3 ), image .get (1 * 2 + 2 , 2 * 2 + 3 ))
448
+ self .assertEqual (image2 .get (1 * 3 + 2 , 2 * 3 + 2 ), image .get (1 * 2 + 2 , 2 * 2 + 3 ))
449
+
450
+ def checkImgTrans (self , image , expected ):
451
+ actual = {(x , y )
452
+ for x in range (image .width ())
453
+ for y in range (image .height ())
454
+ if image .transparency_get (x , y )}
455
+ self .assertEqual (actual , expected )
456
+
457
+ def test_copy_replace_compositingrule (self ):
458
+ image1 = tkinter .PhotoImage (master = self .root , width = 2 , height = 2 )
459
+ image1 .blank ()
460
+ image1 .put ('black' , to = (0 , 0 , 2 , 2 ))
461
+ image1 .transparency_set (0 , 0 , True )
462
+
463
+ # default compositingrule
464
+ image2 = tkinter .PhotoImage (master = self .root , width = 3 , height = 3 )
465
+ image2 .blank ()
466
+ image2 .put ('white' , to = (0 , 0 , 2 , 2 ))
467
+ image2 .copy_replace (image1 , to = (1 , 1 ))
468
+ self .checkImgTrans (image2 , {(0 , 2 ), (2 , 0 )})
469
+
470
+ image3 = tkinter .PhotoImage (master = self .root , width = 3 , height = 3 )
471
+ image3 .blank ()
472
+ image3 .put ('white' , to = (0 , 0 , 2 , 2 ))
473
+ image3 .copy_replace (image1 , to = (1 , 1 ), compositingrule = 'overlay' )
474
+ self .checkImgTrans (image3 , {(0 , 2 ), (2 , 0 )})
475
+
476
+ image4 = tkinter .PhotoImage (master = self .root , width = 3 , height = 3 )
477
+ image4 .blank ()
478
+ image4 .put ('white' , to = (0 , 0 , 2 , 2 ))
479
+ image4 .copy_replace (image1 , to = (1 , 1 ), compositingrule = 'set' )
480
+ self .checkImgTrans (image4 , {(0 , 2 ), (1 , 1 ), (2 , 0 )})
481
+
333
482
def test_put (self ):
334
483
image = self .create ()
335
484
image .put ('{red green} {blue yellow}' , to = (4 , 6 ))
0 commit comments