align.t
上传用户:qdrechuli
上传日期:2022-08-01
资源大小:917k
文件大小:3k
源码类别:

视频捕捉/采集

开发平台:

Visual C++

  1. # Before `make install' is performed this script should be runnable with
  2. # `make test'. After `make install' it should work as `perl test.pl'
  3. BEGIN { $| = 1; print "1..19n"; }
  4. END {print "not ok 1n" unless $loaded;}
  5. use GD;
  6. use GD::Text::Align;
  7. use constant PI => 4 * atan2(1,1);
  8. $loaded = 1;
  9. print "ok 1n";
  10. $i = 2;
  11. # Create an image
  12. $gd = GD::Image->new(200,200);
  13. print 'not ' unless defined $gd;
  14. printf "ok %dn", $i++;
  15. $gd->colorAllocate(255,255,255);
  16. $gd->colorAllocate(0,0,0);
  17. print 'not ' unless $gd->colorsTotal == 2;
  18. printf "ok %dn", $i++;
  19. # Test the default setup
  20. $t = GD::Text::Align->new($gd);
  21. #print "$@n";
  22. print 'not ' unless defined $t;
  23. printf "ok %dn", $i++;
  24. $t->set_text('A string');
  25. ($w, $h, $cu, $cd) = $t->get(qw(width height char_up char_down));
  26. print 'not ' unless ($w==48 && $h==13 && $cu==13 && $cd==0);
  27. printf "ok %dn", $i++;
  28. # Some alignments
  29. $t->set_align('top', 'left');
  30. $t->draw(100,10);
  31. ($x, $y) = $t->get(qw(x y));
  32. print 'not ' unless ($x==100 && $y==10);
  33. printf "ok %dn", $i++;
  34. $t->set_align('center', 'right');
  35. $t->draw(100,10);
  36. ($x, $y) = $t->get(qw(x y));
  37. print 'not ' unless ($x==52 && $y==3.5);
  38. printf "ok %dn", $i++;
  39. $t->set_align('bottom','center');
  40. $t->draw(100,20);
  41. ($x, $y) = $t->get(qw(x y));
  42. print 'not ' unless ($x==76 && $y==7);
  43. printf "ok %dn", $i++;
  44. # Test loading of other builtin font
  45. $t->set_font(gdGiantFont);
  46. $t->set_align('bottom', 'right');
  47. $t->draw(100,40);
  48. ($x, $y) = $t->get(qw(x y));
  49. print 'not ' unless ($x==28 && $y==25);
  50. printf "ok %dn", $i++;
  51. # Test some angles, this method is not meant to be used by anyone but
  52. # me :)
  53. $t->draw(100,40,PI/4);
  54. print 'not ' if ($t->_builtin_up);
  55. printf "ok %dn", $i++;
  56. $t->draw(100,40,PI/4 + 0.000001);
  57. print 'not ' unless ($t->_builtin_up);
  58. printf "ok %dn", $i++;
  59. # And some bounding boxes
  60. $t->set_align('bottom', 'left');
  61. @bb = $t->bounding_box(100,100);
  62. print 'not ' unless ("@bb" eq "100 100 172 100 172 85 100 85");
  63. printf "ok %dn", $i++;
  64. @bb = $t->bounding_box(100,100,PI/2);
  65. print 'not ' unless ("@bb" eq "100 100 100 28 85 28 85 100");
  66. printf "ok %dn", $i++;
  67. # Constructor test
  68. $t = GD::Text::Align->new($gd,
  69. valign => 'top',
  70. halign => 'left',
  71. text => 'Banana Boat',
  72. colour => 1,
  73. font => gdGiantFont,
  74. );
  75. @bb = $t->draw(10,10);
  76. #print "$i = @bbn";
  77. print 'not ' unless ("@bb" eq "10 25 109 25 109 10 10 10");
  78. printf "ok %dn", $i++;
  79. # TTF fonts
  80. if ($t->can_do_ttf)
  81. {
  82. $t = GD::Text::Align->new($gd,
  83. valign => 'top',
  84. halign => 'left',
  85. text => 'Banana Boat',
  86. colour => 1,
  87. font => 'cetus.ttf',
  88. ptsize => 18,
  89. );
  90. @bb = $t->draw(10,40);
  91. #print "$i = @bbn";
  92. print 'not ' unless ("@bb" eq "12 64 154 64 154 46 12 46");
  93. printf "ok %dn", $i++;
  94. $rc = $t->set_font('cetus.ttf', 12);
  95. print 'not ' unless $rc;
  96. printf "ok %dn", $i++;
  97. $t->set_align('bottom', 'left');
  98. @bb = $t->bounding_box(100,100);
  99. #print "$i = @bbn";
  100. print 'not ' unless ("@bb" eq "101 96 194 96 194 84 101 84");
  101. printf "ok %dn", $i++;
  102. $t->set_align('top', 'center');
  103. @bb = $t->bounding_box(100,100, 4*PI/3);
  104. #print "$i = @bbn";
  105. print 'not ' unless ("@bb" eq "109 51 62 132 73 138 119 57");
  106. printf "ok %dn", $i++;
  107. @bb = $t->draw(140,100,4*PI/3);
  108. #print "$i = @bbn";
  109. print 'not ' unless ("@bb" eq "149 51 102 132 113 138 159 57");
  110. printf "ok %dn", $i++;
  111. }
  112. else
  113. {
  114. for (1..5) { printf "ok %d # Skipn", $i++ };
  115. }
  116. __END__
  117. # only during testing of the test scripts
  118. $gd->colorAllocate(127,127,127);
  119. $gd->line(100,0,100,200,2);
  120. $gd->line(0,100,200,100,2);
  121. open(GD, ">/tmp/align.png") or die $!;
  122. binmode GD;
  123. print GD $gd->png;
  124. close(GD);