package ONO::FW::Edu::Apps::Modules::ImageCalc;
################################################################################
# COPYRIGHT / LICENSE #
################################################################################
#
# This file is part of the ONO Software Project.
#
# Copyright (C) 2022-2026 Jos Kirps and The Joopita Project [ASBL]
# Copyright (C) 2011-2022 Jos Kirps and Joopita Research ASBL
# Copyright (C) 2006-2011 Jos Kirps and The Joopita Project
# Copyright (C) 2001-2006 Jos Kirps and The WobbleWolf Project
#
# This file, as well as many other parts of the ONO Software Project or
# related elements, are FREE SOFTWARE available under the ARTISTIC LICENSE 2.0.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
#
# For the full license, see /ono/osr/license/LICENSE.txt, or write to
# jos_AT_kirps_DOT_com or contact_AT_joopita_DOT_com.
#
################################################################################
# END OF COPYRIGHT / LICENSE, HERE COMES THE CODE ... #
################################################################################
#: This module is a front end application module wrapper that has been
#: created for the Morzino Project (morzino.com) and that has been released
#: as Open Source software.
#:
#: Note that this is NOT a self-contained application, it is only a wrapper
#: that makes heavy use of the ONO Perl Framework application engine.
use strict;
use ONO::IO;
use ONO::Lib::Basic;
use ONO::FW::Edu::Apps::Modules::WorksheetMaker::Input;
use ONO::FW::Edu::Apps::ToolBox;
use ONO::FW::Apps::PDF;
use ONO::FW::Apps::ToolBox;
use ONO::Lib::Data::Color;
use ONO::Lib::Image::Canvas::Draw;
use ONO::Lib::PDF::Draw;
use ONO::Lib::PDF::ToolBox;
use ONO::Lib::PDF::Elements::Ruler;
use ONO::Lib::PDF::Elements::Dice;
use ONO::Lib::PDF::Elements::Brick;
use ONO::Lib::PDF::Elements::Sticker;
use ONO::Lib::UI::Check;
use ONO::Lib::UI::Sticker;
use ONO::FW::Apps::Core;
use ONO::FW::Apps::Core::Graphics;
use ONO::FW::Edu::Apps::Modules::MathCount;
use ONO::FW::Edu::Apps::Modules::MathRods;
use ONO::Lib::Parser;
sub learn {
my (
$self,
$option,
$vars_ref,
$HTTP,
$BASE,
) = @_;
################################################################
# INIT - BEGIN
################################################################
my (
$db,
$community,
$action_url,
$form,
$format,
$canvas,
$pdfkey,
$sec,$min,$hour,
$mday,$mon,$year,
$wday,$yday,$timestamp,
$lang,
$BLK_ref,
$vars_ref,
) = ONO::FW::Apps::Core->init($vars_ref);
my %vars = %$vars_ref;
my %BLK = %$BLK_ref;
my $app = "image_calc";
my @txt = (
"Calc with images",
"show numbers below images",
"show resulting image",
);
if ($vars{'app_lang'} eq "de") {
@txt = (
"Rechnen mit Bildern",
"Zahlen unter den Bilern anzeigen",
"Resultat-Bild anzeigen",
);
}
if ($vars{'app_lang'} eq "lu") {
@txt = (
"Rechnen mat Biller",
"Zuelen ënnert de Biller uweisen",
"Resultat-Bild uweisen",
);
}
if ($vars{'app_lang'} eq "fr") {
@txt = (
"Calcul avec images",
"afficher nombres sous images",
"afficher image du résultat",
);
}
ONO::FW::Apps::Core->now("",$app,$vars{'app_lang'});
my $WEB;
$WEB .= ONO::FW::Apps::Core->output_paper_save($pdfkey,$BLK_ref,\%vars,$HTTP,$BASE,"$year$mon$mday");
if (ONO::FW::Apps::Core->running(\%vars,$db) || $vars{'output_web_next_question'}) {
$WEB .= ONO::FW::Apps::Core->blockbackbutton($BASE,$vars_ref);
($vars{'app_input_range_from'},$vars{'app_input_range_to'}) = ONO::FW::Apps::Core->range_check(15,20,$vars{'app_input_range_from'},$vars{'app_input_range_to'});
#############################################################
# WORKSHEET MAKER
#############################################################
if ($vars{'output_worksheet_maker'}) {
$vars_ref = ONO::FW::Edu::Apps::Modules::WorksheetMaker::Input->vars(\%vars);
%vars = %$vars_ref;
}
#############################################################
# ONLINE TRAINING
#############################################################
my ($types_ref,$types_num) = ONO::FW::Edu::Apps::Modules::MathCount->types_detect(\%vars);
my @types = @$types_ref;
my @colors = ONO::Lib::Data::Color->rainbow("10");
if ($vars{'output_web'} || $vars{'output_paper'}) {
my @defs = ONO::FW::Apps::Core::Graphics->image_ids();
my $defs_num = @defs;
my $defs_ref = \@defs;
my $question_number = ONO::FW::Apps::Core->question_number($vars{'output_web_question_number'});
my ($PDF_OPTS,$stat_correct,$stat_wrong,$stat_todo,$stat_todo_total,@pdf_items);
my $questions_per_page = 1;
if ($vars{'output_paper'}) {
$PDF_OPTS = ONO::FW::Apps::Core->headers_options($BLK_ref,$vars_ref);
ONO::FW::Apps::PDF->new("$BASE/pdf/pdf-$pdfkey.pdf","",$format);
$questions_per_page = 4;
}
foreach my $copy (ONO::FW::Apps::Core->unique_copies($vars{'app_input_print_options_unique_copies'})) {
my @corr_cache;
if ($vars{'output_paper'}) {
if ($copy > 1) {
ONO::FW::Apps::PDF->page("",$format);
}
ONO::FW::Apps::Core->headers(\%vars,$format);
ONO::FW::Apps::PDF->title($vars{'app_input_print_options_title'},$PDF_OPTS,$vars{'app_input_print_options_code'},$format);
ONO::FW::Apps::Core->unique_copies_info($canvas,$copy,$vars_ref);
ONO::FW::Apps::Core::Graphics->pdf_draw_item_numbers($canvas,-2,0,1,4,"HV",$vars_ref);
# ONO::Lib::PDF::ToolBox->canvas_test($canvas);
}
my ($op_symbol_opts,%used);
my ($pdf_x,$pdf_y) = (5,0);
my ($max_x,$max_y) = (1,1);
if ($vars{'output_paper'}) {
($max_x,$max_y) = (2,4);
$op_symbol_opts = "p";
}
if ($vars{'output_web'} && $vars{'output_web_next_question'}) {
$vars{'output_web_question_number'}++;
$question_number++;
foreach my $key (keys %vars) {
if ($key =~ /^output_web_/ && $key !~ /^output_web_(mistakes|question)/) {
$vars{$key} = "";
}
}
}
my $max_r = 3;
if (!$vars{'app_input_display_result_image'}) {
$max_r = 2;
}
for (my $y = 0; $y < $max_y; $y++) {
for (my $x = 0; $x < $max_x; $x++) {
$pdf_x = $x * 87 + 5;
$pdf_y = $y * 47.5;
my $type = $vars{'output_web_cache_type'};
my $num1 = $vars{'output_web_cache_num1'};
my $num2 = $vars{'output_web_cache_num2'};
my $op = $vars{'output_web_cache_op'};
my $res = $vars{'output_web_cache_res'};
if (!$vars{'output_web_exercise_running'} && ($type eq "" || $vars{'output_web_next_question'})) {
$type = $types[int(rand($types_num))];
my $whilecounter;
while ($whilecounter < 16 && $used{"type_$type"}) {
$whilecounter++;
$type = $types[int(rand($types_num))];
}
$used{"type_$type"}++;
$op = ONO::FW::Apps::Core->random_operation(ONO::FW::Apps::Core->get_operations(\%vars));
my $big = $vars{'app_input_range_from'}+int(rand($vars{'app_input_range_to'}-$vars{'app_input_range_from'}+1));
my $small = 1+int(rand($vars{'app_input_range_to'}));
if ($small > $big) {
($big,$small) = ($small,$big);
}
my ($exclude,$whilecounter);
while ($whilecounter < 4096 && (!$num1 || !$num2 || $exclude)) {
$whilecounter++;
# number generator
$big = $vars{'app_input_range_from'}+int(rand($vars{'app_input_range_to'}-$vars{'app_input_range_from'}+1));
$small = 1+int(rand($vars{'app_input_range_to'}));
if ($small > $big) {
($big,$small) = ($small,$big);
}
# add
$num1 = $small;
$num2 = $big-$small;
if (int(rand(100)) > 50) {
($num1,$num2) = ($num2,$num1);
}
$res = $big;
# sub
if ($op eq "sub") {
$num1 = $big;
$num2 = $small;
$res = $big-$small;
}
# tens barrier
$exclude = 0;
if ($vars{'app_input_tens_barrier'} == 0) {
my $last1 = substr($num1,(length $num1)-1,1);
my $last2 = substr($num2,(length $num2)-1,1);
if ($op eq "add" && ($last1 + $last2 > 9)) {
$exclude++;
}
if ($op eq "sub" && ($last2 - $last1 < 0 || $last1 == 0)) {
$exclude++;
}
}
}
# mul
if ($op eq "mul") {
($num1,$num2,$res) = (1,1,1);
my $whilecounter;
# normal case
my $mul_1 = $vars{'app_input_range_to'};
my $mul_2 = $vars{'app_input_range_to'};
# special case: rods
if ($type eq "rods") {
$mul_1 = 5;
$mul_2 = 10;
}
while ($whilecounter < 4096 && (($num1 == 1 && $num2 == 1) || !$res || $res > $big)) {
$whilecounter++;
$num1 = 1+int(rand($mul_1));
$num2 = 1+int(rand($mul_2));
if ($num1 < 2 && int(rand(100)) > 10) {
$num1 = 2+int(rand($mul_1-1));
}
if ($num2 < 2 && int(rand(100)) > 10) {
$num2 = 2+int(rand($mul_2-1));
}
if ($num1 < 3 && int(rand(100)) > 20) {
$num1 = 2+int(rand($mul_1-1));
}
if ($num2 < 3 && int(rand(100)) > 20) {
$num2 = 2+int(rand($mul_2-1));
}
$res = $num1 * $num2;
}
# fix bad stuff...
if (!$num1 || !$num2 || !$res || $res > $big) {
($num1,$num2,$res) = (1,1,1);
}
}
}
my $op_symbol = ONO::FW::Apps::Core->operation_symbol($op,$op_symbol_opts);
my @nums = ($num1,$num2,$res);
if ($vars{'output_web'}) {
$WEB .= qq~<$form>~;
$WEB .= ONO::FW::Apps::Core->question_progress($vars{'app_input_number_of_questions'},$question_number);
$WEB .= ONO::FW::Apps::Core->stats("",$BLK_ref,"cm");
if (!$vars{'output_web_mistakes'}) {
$vars{'output_web_mistakes'} = 0;
}
}
if ($vars{'output_paper'}) {
ONO::Lib::PDF::Draw->font("HB",14);
for (my $r = 0; $r < 3; $r++) {
my $use_x = $pdf_x+12+$r*28;
my $use_y = $pdf_y+18.5+21;
@corr_cache = (@corr_cache,"text:$use_x:$use_y:$nums[$r]:c:");
if ($vars{'app_input_display_numbers'} && $r < 2) {
ONO::Lib::PDF::Draw->text($canvas,$use_x,$use_y,$nums[$r],"c");
}
}
my $BG = ONO::FW::Edu::Apps::Modules::MathCount->rect_bg($type);
if ($type eq "cards") {
$BG = "0:75:175:75";
}
for (my $r = 0; $r < 3; $r++) {
if ($type !~ /(dices|stickers|rods|images|money)/ || (!$r && $op eq "mul" && $type =~ /(dices|stickers|images|money)/)) {
ONO::Lib::PDF::Draw->rect($canvas,$pdf_x+$r*28,$pdf_y+6,$pdf_x+$r*28+22,$pdf_y+28,1,"0:22:22:22",$BG,2);
}
if ($r == 2 && $max_r == 2 && $type =~ /(images)/) {
ONO::Lib::PDF::Draw->rect($canvas,$pdf_x+$r*28,$pdf_y+6,$pdf_x+$r*28+22,$pdf_y+28,1,"0:222:222:222","0:255:255:255",2);
}
ONO::Lib::PDF::Draw->line($canvas,$pdf_x+$r*28+2,$pdf_y+43,$pdf_x+$r*28+20,$pdf_y+43,1);
}
for (my $o = 0; $o < 2; $o++) {
if ($o || $type !~ /(rods)/) {
my $use_x = $pdf_x+25;
my $use_y = $pdf_y+17.5+$o*21;
ONO::Lib::PDF::Draw->text_math_symbol($canvas,$use_x,$use_y,3,$op);
@corr_cache = (@corr_cache,"text_math_symbol:$use_x:$use_y:3:$op:");
my $use_x = $pdf_x+53;
my $use_y = $pdf_y+17.5+$o*21;
ONO::Lib::PDF::Draw->text_math_symbol($canvas,$use_x,$use_y,3,"=");
@corr_cache = (@corr_cache,"text_math_symbol:$use_x:$use_y:3:=:");
}
}
}
my (
$WEB2,
$HTML_ref,
$corr_cache_ref,
) = &engine("",$canvas,$pdf_x,$pdf_y,$max_r,3,$type,$op,$op_symbol,\@nums,$defs_ref,$defs_num,\@corr_cache,\@colors,\%vars);
$WEB .= $WEB2;
my @HTML = @$HTML_ref;
@corr_cache = @$corr_cache_ref;
if (ONO::FW::Apps::Core->question_progress_done($vars{'app_input_number_of_questions'},$question_number) || $vars{'output_web_finish'}) {
$vars{'output_progress_done'}++;
$WEB .= ONO::FW::Apps::Core->question_progress_done_msg($app,$db,$community,$form,$action_url,$vars{'app_input_number_of_questions'},$vars{'output_web_mistakes'},$lang,$BLK_ref,\%vars);
} else {
for (my $i = 0; $i < $questions_per_page; $i++) {
if ($vars{'output_web'}) {
$WEB .= ONO::FW::Apps::Core->input_vars(\%vars);
$WEB .= qq~<input type="hidden" name="output_web_cache_type" value="$type">
<input type="hidden" name="output_web_cache_num1" value="$nums[0]">
<input type="hidden" name="output_web_cache_num2" value="$nums[1]">
<input type="hidden" name="output_web_cache_op" value="$op">
<input type="hidden" name="output_web_cache_res" value="$nums[2]">
~;
my $BUTTON = qq~<input type="submit" name="submit" value="$BLK{'do_correct'}" class="button_green button_big mt10 mb2">~;
my ($BOXES,$FIELDS,$ANSWER_COLOR,$input_focus);
my @pad = (10,0,0,15);
my @answers_correct;
for (my $r = 0; $r < 3; $r++) {
my $PLA = "?";
if (ONO::IO->devstation) {
$PLA = $nums[$r];
}
my $ANSWER_COLOR = "paper";
my $NUM = qq~<input type="text" id="output_web_answer_${r}_id" name="output_web_answer_$r" value="$vars{"output_web_answer_$r"}" class="w100 center" placeholder="$PLA" autocomplete="off">~;
if ($r < 2 && $vars{'app_input_display_numbers'}) {
$NUM = qq~<div class="xlarge bold center p5">$nums[$r]</div>~;
$answers_correct[$r]++
} else {
if ($vars{"output_web_answer_$r"} ne "") {
$ANSWER_COLOR = "red";
$NUM .= qq~<script>onojs_focus('output_web_answer_${r}_id');</script>~;
if ($vars{"output_web_answer_$r"} == $nums[$r]) {
$ANSWER_COLOR = "green";
$NUM = qq~<div class="xlarge bold center p5 green">$nums[$r]</div>~;
$answers_correct[$r]++
}
} else {
if (!$input_focus) {
$NUM .= qq~<script>onojs_focus('output_web_answer_${r}_id');</script>~;
$input_focus++;
}
}
}
my $BOX_CLASS = "box_paper";
my $BOX_STYLE;
if ($type eq "cards" && ($r < 2 || $vars{'app_input_display_result_image'})) {
$BOX_CLASS = "box_white";
$BOX_STYLE = "background-color:#44aa44";
}
$BOXES .= qq~ <td class="w33">
<div class="pad10_0">
<div class="$BOX_CLASS block200" style="$BOX_STYLE"><div style="padding:$pad[0]px $pad[1]px $pad[2]px $pad[3]px">$HTML[$r]</div></div>
</div>
</td>
~;
$FIELDS .= qq~ <td>
<div class="pad10_0">
<div class="box_$ANSWER_COLOR mt10">
<div class="inline w50 auto">
$NUM
</div>
</div>
</div>
</td>
~;
if ($r == 0) {
$BOXES .= qq~ <td><div class="bold xlarge" style="font-size:48px">$op_symbol</div></td>~;
$FIELDS .= qq~ <td><div class="bold xlarge" style="font-size:48px">$op_symbol</div></td>~;
}
if ($r == 1) {
$BOXES .= qq~ <td><div class="bold xlarge" style="font-size:48px">=</div></td>~;
$FIELDS .= qq~ <td><div class="bold xlarge" style="font-size:48px">=</div></td>~;
}
}
if ($answers_correct[0] && $answers_correct[1] && $answers_correct[2]) {
$BUTTON = qq~<input type="submit" name="please_wait" value="$BLK{'please_wait'}..." class="button_green button_big mt10 mb2">
<input type="hidden" name="output_web_next_question" value="1">
<script>onojs_submit();</script>
~;
}
my $BOX1;
my $BOX2 = qq~<tr>$BOXES</tr>~;
my $bigmode;
if ($type =~ /(rods)/) {
$bigmode = 1;
}
if ($bigmode) {
$BOX2 = "";
$BOX1 = qq~<div class="pad10_0"><div class="p2"><div class="box_paper">$HTML[0]</div></div></div>~;
}
$WEB .= qq~<input type="hidden" name="output_web_exercise_running" value="1">
<div class="inline auto" style="min-width:800px">
<div class="box_fabric mt10">
$BOX1
<div class="inline auto">
<table class="default_table">
$BOX2
<tr>
$FIELDS
</tr>
</table>
</div>
<div class="inline auto">$BUTTON</div>
</div>
</div>
~;
$WEB = ONO::FW::Apps::Core->stats_replace($WEB,$stat_correct,$stat_wrong,$stat_todo_total,$vars{'output_web_mistakes'},0,0,$vars{'output_web_completed'});
}
}
if ($vars{'output_web'}) {
$WEB .= qq~</form>~;
}
}
# $pdf_x = $pdf_x + 88;
}
# $pdf_x = 5;
# $pdf_y = $pdf_y + 47.5;
}
if (ONO::FW::Apps::Core->print_corrections("$BASE/pdf/pdf-$pdfkey-corr.pdf","",$format,$vars_ref)) {
ONO::FW::Apps::Core->headers(\%vars,$format,"c");
ONO::FW::Apps::PDF->title($BLK{'Corrections'},$PDF_OPTS,$vars{'app_input_print_options_code'},$format);
ONO::FW::Apps::Core->unique_copies_info($canvas,$copy,$vars_ref);
ONO::FW::Apps::Core::Graphics->pdf_draw_item_numbers($canvas,-2,0,1,4,"HV",$vars_ref);
# ONO::Lib::PDF::ToolBox->canvas_test($canvas);
my ($pdf_x,$pdf_y) = (5,0);
for (my $y = 0; $y < 4; $y++) {
for (my $x = 0; $x < 2; $x++) {
for (my $r = 0; $r < 3; $r++) {
ONO::Lib::PDF::Draw->line($canvas,$pdf_x+$r*28+2,$pdf_y+43,$pdf_x+$r*28+20,$pdf_y+43,1);
}
$pdf_x = $pdf_x + 88;
}
$pdf_x = 5;
$pdf_y = $pdf_y + 47.5;
}
foreach my $corr (@corr_cache) {
ONO::Lib::PDF::Draw->font("HB",14);
my @cp = split(/:/,$corr);
if ($cp[0] eq "text") {
ONO::Lib::PDF::Draw->text($canvas,$cp[1],$cp[2],$cp[3],$cp[4]);
}
if ($cp[0] eq "text_math_symbol") {
ONO::Lib::PDF::Draw->text_math_symbol($canvas,$cp[1],$cp[2],$cp[3],$cp[4]);
}
if ($cp[0] eq "line") {
ONO::Lib::PDF::Draw->line($canvas,$cp[1],$cp[2],$cp[3],$cp[4],$cp[5]);
}
if ($cp[0] eq "circle") {
ONO::Lib::PDF::Draw->circle($canvas,$cp[1],$cp[2],$cp[3],$cp[4],$cp[5]);
}
if ($cp[0] eq "image") {
ONO::Lib::PDF::Draw->image($canvas,$cp[1],$cp[2],$cp[3],$cp[4],$cp[5],$cp[6],$cp[6]);
}
if ($cp[0] eq "dice" || $cp[0] eq "dices") {
ONO::Lib::PDF::Elements::Dice->dice($canvas,$cp[1],$cp[2],$cp[3],$cp[4],0,"0:222:222:222","0:22:22:22");
}
if ($cp[0] eq "stickers") {
ONO::Lib::PDF::Elements::Sticker->sticker($canvas,$cp[1],$cp[2],$cp[4],$cp[4],$cp[3],"","bcsW");
}
if ($cp[0] eq "brick") {
if ($cp[7]) {
$cp[7] = "0:111:111:111";
}
ONO::Lib::PDF::Elements::Brick->brick($canvas,$cp[1],$cp[2],$cp[3],$cp[4],$cp[5],$cp[6],$cp[7]);
}
}
}
}
if ($vars{'output_paper'}) {
ONO::FW::Apps::PDF->end;
$WEB .= ONO::FW::Apps::PDF->please_wait($pdfkey,\%BLK,\%vars,"",$HTTP,$BASE);
}
}
} else {
#############################################################
# EXERCISE SETUP
#############################################################
if (!$vars{'app_input_number_of_questions'}) {
$vars{'app_input_number_of_questions'} = 20;
}
$WEB .= ONO::FW::Apps::Core->infopics(
"screen:320:50:40::image_calc_screenshot_1.jpg",
"sheet:168:190:140:15:image_calc_sheet_1.jpg",
"sheet:168:40:150:-10:image_calc_sheet_2.jpg",
);
my @opts = ONO::FW::Edu::Apps::Modules::MathCount->opts($BLK_ref);
my $type_found = ONO::FW::Edu::Apps::Modules::MathCount->type_found(\%vars,$BLK_ref);
if (!$type_found) {
$vars{"app_input_type_dots"} = 1;
$vars{"app_input_type_rods"} = 1;
$vars{"app_input_type_dices"} = 1;
$vars{"app_input_type_images"} = 1;
}
my ($CUSTOM,$SCRIPT_END) = ONO::FW::Edu::Apps::Modules::MathCount->type_select(\%vars,$BLK_ref,48);
my ($CURR,$USE,$SCRIPT,$hide_curr) = ONO::FW::Edu::Apps::Modules::MathCount->currency(\%vars,$BLK_ref);
my $CONF;
$CONF .= ONO::FW::Apps::ToolBox->conf_input("range", $BLK_ref,\%vars,"",5,20,20);
$CONF .= ONO::FW::Apps::ToolBox->conf_input("spacer", $BLK_ref,\%vars,"","");
$CONF .= ONO::FW::Apps::ToolBox->conf_input("ops", $BLK_ref,\%vars,"","asm-AS");
$CONF .= ONO::FW::Apps::ToolBox->conf_input("spacer", $BLK_ref,\%vars,"","");
$CONF .= ONO::FW::Apps::ToolBox->conf_input("tensbarrier", $BLK_ref,\%vars,"","S");
$CONF .= ONO::FW::Apps::ToolBox->conf_input("spacer", $BLK_ref,\%vars,"","s");
$CONF .= ONO::FW::Apps::ToolBox->conf_input("custom", $BLK_ref,\%vars,"","",$CUSTOM);
$CONF .= ONO::FW::Apps::ToolBox->conf_input("custom", $BLK_ref,\%vars,"","",qq~<div id="currency_selector_id" class="$hide_curr">$CURR</div>~);
if ($vars{'output_web'} || $vars{'output_paper'}) {
$CONF .= ONO::FW::Apps::ToolBox->conf_input("spacer", $BLK_ref,\%vars,"","s");
$CONF .= ONO::FW::Apps::ToolBox->conf_input("check", $BLK_ref,\%vars,"S","","display_numbers",$vars{'app_input_display_numbers'},qq~<div class="lh100">$txt[1]</div>~);
$CONF .= ONO::FW::Apps::ToolBox->conf_input("check", $BLK_ref,\%vars,"S","","display_result_image",$vars{'app_input_display_result_image'},qq~<div class="lh100">$txt[2]</div>~);
$CONF .= ONO::FW::Apps::ToolBox->conf_input("spacer", $BLK_ref,\%vars,"","s");
} else {
$CONF .= qq~<input type="hidden" name="app_input_display_numbers" value="$vars{'app_input_display_numbers'}">
<input type="hidden" name="app_input_display_result_image" value="$vars{'app_input_display_result_image'}">
~;
}
$WEB .= ONO::FW::Apps::Core->conf_box(
$db,
$community,
$app,
$form,
"",
$action_url,
$CONF,
$lang,
$BLK_ref,
\%vars,
"op-ncdi-CDI-lsu-N",
);
$SCRIPT .= ONO::FW::Edu::Apps::Modules::MathCount->script(48);
$WEB .= qq~$SCRIPT$SCRIPT_END~;
if ($vars{'app_input_currency'}) {
$WEB .= qq~<script>use_box_select('$vars{'app_input_currency'}')</script>~;
}
if (!$vars{'exercise'}) {
$WEB .= ONO::FW::Apps::Core->info_display(
ONO::FW::Apps::Core->info("info_online_print",$vars{'app_lang'}),
ONO::FW::Apps::Core->info("info_indiv_diff", $vars{'app_lang'}),
);
}
}
my ($status,$WEB) = ONO::Lib::Parser->parse($WEB,$vars_ref);
$WEB .= ONO::FW::Apps::Core->vardump($vars_ref);
$WEB = ONO::FW::Edu::Apps::ToolBox->apps_gate($WEB,$vars_ref);
return $WEB;
}
###################################################################
# SUBS
###################################################################
sub engine {
my (
$self,
$canvas,
$pdf_x,
$pdf_y,
$max_r,
$max_r_abs,
$type,
$op,
$op_symbol,
$nums_ref,
$defs_ref,
$defs_num,
$corr_cache_ref,
$colors_ref,
$vars_ref,
) = @_;
my @nums = @$nums_ref;
my @corr_cache = @$corr_cache_ref;
my @colors = @$colors_ref;
my %vars = %$vars_ref;
my ($WEB,@HTML);
my $DEBUG .= qq~<br>imgcalc_engine, type = $type, nums = $nums[0]/$nums[1]/$nums[2], op = $op, max_r = $max_r, ~;
if ($type eq "dots" || $type eq "dotsr") {
my $COLOR = $vars{'output_web_cache_col1'};
my $COLOR2 = $vars{'output_web_cache_col2'};
if ($vars{'output_web_cache_col1'} eq "") {
$COLOR = ONO::FW::Edu::Apps::Modules::MathCount->rand_color(1);
$COLOR2 = ONO::FW::Edu::Apps::Modules::MathCount->rand_color(2);
if (int(rand(100)) > 50 && $op ne "mul") {
($COLOR,$COLOR2) = ($COLOR2,$COLOR);
}
}
$WEB .= qq~<input type="hidden" name="output_web_cache_col1" value="$COLOR">
<input type="hidden" name="output_web_cache_col2" value="$COLOR2">
~;
for (my $r = 0; $r < $max_r_abs; $r++) {
my $COLOR1 = $COLOR;
my $COLOR1COPY = $COLOR;
my ($off_x,$off_y,$delta_mode);
my $dots = $nums[$r];
if ($op eq "sub" && $r == 2) {
$dots = $nums[0];
}
for (my $d = 0; $d < $dots; $d++) {
my $subline;
if ($op eq "add" && ($r == 1 || ($r == 2 && $d > $nums[0]-1))) {
$COLOR1 = $COLOR2;
$COLOR1COPY = $COLOR2;
}
if ($op eq "sub" && $r == 2 && $d > $nums[2]-1) {
if ($d == $nums[2]) {
$COLOR1 = ONO::Lib::PDF::Draw->color_change($COLOR1,50);
}
$subline = 1;
}
if ($op eq "mul" && $r) {
$COLOR1 = $COLOR2;
$COLOR1COPY = $COLOR2;
if ($r == 2) {
if ($d && $d%$nums[1] == 0) {
if (!$delta_mode) {
$delta_mode = 1;
} else {
$delta_mode = 0;
}
}
if ($delta_mode) {
my $delta = 50;
if (ONO::Lib::PDF::Draw->color_intensity($COLOR2) > 127) {
$delta = -50;
}
$COLOR1 = ONO::Lib::PDF::Draw->color_change($COLOR2,$delta);
$COLOR1COPY = $COLOR1;
}
}
}
my ($rand_x,$rand_y);
if ($type eq "dotsr") {
($rand_x,$rand_y) = (int(5-rand(11))/10,int(5-rand(11))/10);
}
my $x1 = $pdf_x+3+$r*28+$off_x+$rand_x;
my $y1 = $pdf_y+9.5+$off_y+$rand_y;
@corr_cache = (@corr_cache,"circle:$x1:$y1:1.5:1:$COLOR1:$COLOR1COPY:");
if ($r < $max_r && $vars{'output_web'}) {
my $SUB;
if ($subline) {
$SUB = qq~<div class="abs rot135" style="top:10px;left:-8px;width:40px;height:4px;background-color:#cc3333"></div>~;
}
my $RAND;
if ($type eq "dotsr") {
($rand_x,$rand_y) = (2-int(rand(5)),2-int(rand(5)));
$RAND = "top:${rand_y}px;left:${rand_x}px;";
}
my $COL = ONO::Lib::PDF::Draw->color_to_html($COLOR1);
$HTML[$r] .= qq~<div class="block24 bo radius12 mr10 mb10 rel fl" style="background-color:$COL;$RAND">$SUB</div>~;
}
if ($r < $max_r && $vars{'output_paper'}) {
ONO::Lib::PDF::Draw->circle($canvas,$x1,$y1,1.4,1,$COLOR1,$COLOR1COPY);
if ($subline) {
ONO::Lib::PDF::Draw->line($canvas,$x1-1,$y1+1,$x1+1,$y1-1,2,"0:255:255:255");
ONO::Lib::PDF::Draw->line($canvas,$x1-1.5,$y1+1.5,$x1+1.5,$y1-1.5,1,"0:222:22:22");
}
}
if ($subline) {
my @use = ($x1-1,$y1+1,$x1+1,$y1-1);
@corr_cache = (@corr_cache,"line:$use[0]:$use[1]:$use[2]:$use[3]:1");
}
$off_x = $off_x + 4;
if (($d-4)%5 == 0) {
$off_x = 0;
$off_y = $off_y + 5;
}
}
}
}
if ($type eq "dices" || $type eq "stickers") {
my $dice_max = 6;
if ($type eq "stickers") {
$dice_max = 10;
}
for (my $r = 0; $r < $max_r_abs; $r++) {
my $sticker_switches = "bcrs";
if ($r == 2) {
$sticker_switches = "bcrsZ";
}
if (!$r && $op eq "mul") {
if ($vars{'output_web'}) {
$HTML[$r] = qq~<div class="bold center mr10" style="padding-top:70px;font-size:128px">$nums[$r]</div>~;
}
if ($vars{'output_paper'}) {
my $use_x = $pdf_x+11;
my $use_y = $pdf_y+20.5;
ONO::Lib::PDF::Draw->font("HB",28);
ONO::Lib::PDF::Draw->text($canvas,$use_x,$use_y,$nums[0],"c");
ONO::Lib::PDF::Draw->font("HB",14);
@corr_cache = (@corr_cache,"text:$use_x:$use_y:$nums[0]:c");
}
} else {
if ($vars{'output_web'}) {
my $num = $nums[$r];
my $whilecounter;
if ($type eq "dices") {
my @cols = ('black','red','green','blue','white');
my $color = $cols[int(rand(5))];
my $counter = 0;
while ($whilecounter < 256 && $num > 6) {
$color = $cols[int(rand(5))];
if ($vars{"output_web_cache_col_${r}_$counter"} ne "") {
$color = $vars{"output_web_cache_col_${r}_$counter"};
}
$HTML[$r] .= qq~<input type="hidden" name="output_web_cache_col_${r}_$counter" value="$color">~;
$HTML[$r] .= qq~<img class="block64 fl mr10 mb10" src="/ono/osr/images/dices/64/${color}_6.jpg" alt="6">~;
$num = $num - 6;
$counter++;
}
$color = $cols[int(rand(5))];
if ($vars{"output_web_cache_col_${r}_$counter"} ne "") {
$color = $vars{"output_web_cache_col_${r}_$counter"};
}
$HTML[$r] .= qq~<input type="hidden" name="output_web_cache_col_${r}_$counter" value="$color">~;
$HTML[$r] .= qq~<img class="block64 fl mr10 mb10" src="/ono/osr/images/dices/64/${color}_$num.jpg" alt="$num">~;
}
if ($type eq "stickers") {
my $size = 166;
if ($num > 10) {
$size = 72;
}
my @colors = ONO::Lib::PDF::Elements::Sticker->colors();
my $color_num = @colors;
my $counter = 0;
while ($whilecounter < 256 && $num > 10) {
my @cp = split(/:/,$colors[int(rand($color_num))]);
if ($vars{"output_web_cache_col_${r}_$counter"} ne "") {
$cp[0] = $vars{"output_web_cache_col_${r}_$counter"};
}
$HTML[$r] .= qq~<input type="hidden" name="output_web_cache_col_${r}_$counter" value="$cp[0]">~;
$HTML[$r] .= ONO::Lib::UI::Sticker->sticker($size,$size,10,$cp[0],"abcFs");
$num = $num - 10;
$counter++;
}
my @cp = split(/:/,$colors[int(rand($color_num))]);;
if ($vars{"output_web_cache_col_${r}_$counter"} ne "") {
$cp[0] = $vars{"output_web_cache_col_${r}_$counter"};
}
$HTML[$r] .= qq~<input type="hidden" name="output_web_cache_col_${r}_$counter" value="$cp[0]">~;
$HTML[$r] .= ONO::Lib::UI::Sticker->sticker($size,$size,$num,$cp[0],"abcFs");
}
}
if ($vars{'output_paper'}) {
my $num = $nums[$r];
my $six = $dice_max;
if ($r == 2 && $max_r == 2) {
$num = 0;
$six = "";
}
if ($nums[$r] < $dice_max+1) {
my $use_x = $pdf_x+1+$r*28;
my $use_y = $pdf_y+7;
my $size = 20;
if ($type eq "stickers") {
ONO::Lib::PDF::Elements::Sticker->sticker($canvas,$use_x,$use_y,$size,$size,$num,$vars{'output_sticker_color'},$sticker_switches);
} else {
ONO::Lib::PDF::Elements::Dice->dice($canvas,$use_x,$use_y,$num,$size);
}
@corr_cache = (@corr_cache,"$type:$use_x:$use_y:$num:$size");
} else {
if ($nums[$r]< 2*$dice_max+1) {
my $use_x = $pdf_x+$r*28;
my $use_y = $pdf_y+6;
my $size = 12.5;
if ($type eq "stickers") {
ONO::Lib::PDF::Elements::Sticker->sticker($canvas,$use_x,$use_y,$size,$size,$six,$vars{'output_sticker_color'},$sticker_switches);
} else {
ONO::Lib::PDF::Elements::Dice->dice($canvas,$use_x,$use_y,$six,$size);
}
@corr_cache = (@corr_cache,"$type:$use_x:$use_y:$six:$size");
my $use_x = $pdf_x+$r*28+9.5;
my $use_y = $pdf_y+15.5;
my $use_n = $num-$six;
if ($type eq "stickers") {
ONO::Lib::PDF::Elements::Sticker->sticker($canvas,$use_x,$use_y,$size,$size,$use_n,$vars{'output_sticker_color'},$sticker_switches);
} else {
ONO::Lib::PDF::Elements::Dice->dice($canvas,$use_x,$use_y,$use_n,$size);
}
@corr_cache = (@corr_cache,"$type:$use_x:$use_y:$use_n:$size");
} else {
if ($nums[$r] < 3*$dice_max+1) {
my $use_x = $pdf_x+$r*28;
my $use_y = $pdf_y+6;
my $size = 11.5;
if ($type eq "stickers") {
ONO::Lib::PDF::Elements::Sticker->sticker($canvas,$use_x,$use_y,$size,$size,$six,$vars{'output_sticker_color'},$sticker_switches);
} else {
ONO::Lib::PDF::Elements::Dice->dice($canvas,$use_x,$use_y,$six,$size);
}
@corr_cache = (@corr_cache,"$type:$use_x:$use_y:$six:$size");
my $use_x = $pdf_x+$r*28+10.5;
my $use_y = $pdf_y+9;
if ($type eq "stickers") {
ONO::Lib::PDF::Elements::Sticker->sticker($canvas,$use_x,$use_y,$size,$size,$six,$vars{'output_sticker_color'},$sticker_switches);
} else {
ONO::Lib::PDF::Elements::Dice->dice($canvas,$use_x,$use_y,$six,$size);
}
@corr_cache = (@corr_cache,"$type:$use_x:$use_y:$six:$size");
my $use_x = $pdf_x+$r*28+1;
my $use_y = $pdf_y+16.5;
my $use_n = $num-2*$six;
if ($type eq "stickers") {
ONO::Lib::PDF::Elements::Sticker->sticker($canvas,$use_x,$use_y,$size,$size,$use_n,$vars{'output_sticker_color'},$sticker_switches);
} else {
ONO::Lib::PDF::Elements::Dice->dice($canvas,$use_x,$use_y,$use_n,$size);
}
@corr_cache = (@corr_cache,"$type:$use_x:$use_y:$use_n:$size");
} else {
my $use_x = $pdf_x+$r*28+1;
my $use_y = $pdf_y+6;
my $size = 11.5;
ONO::Lib::PDF::Elements::Dice->dice($canvas,$use_x,$use_y,$six,$size);
@corr_cache = (@corr_cache,"$type:$use_x:$use_y:6:$size");
my $use_x = $pdf_x+$r*28+12;
my $use_y = $pdf_y+7;
ONO::Lib::PDF::Elements::Dice->dice($canvas,$use_x,$use_y,$six,$size);
@corr_cache = (@corr_cache,"$type:$use_x:$use_y:6:$size");
my $use_x = $pdf_x+$r*28;
my $use_y = $pdf_y+17;
ONO::Lib::PDF::Elements::Dice->dice($canvas,$use_x,$use_y,$six,$size);
@corr_cache = (@corr_cache,"$type:$use_x:$use_y:6:$size");
my $use_x = $pdf_x+$r*28+11;
my $use_y = $pdf_y+18;
ONO::Lib::PDF::Elements::Dice->dice($canvas,$use_x,$use_y,$num-3*$six,$size);
my $num2 = $nums[$r]-18;
@corr_cache = (@corr_cache,"$type:$use_x:$use_y:$num2:$size");
}
}
}
}
}
}
}
if ($type eq "cards") {
for (my $r = 0; $r < $max_r_abs; $r++) {
my @ctype = ('c','d','h','s');
my $cardcolor = $ctype[int(rand(4))];
if (!$r && $op eq "mul") {
$HTML[$r] = qq~<div class="bold center mr10" style="padding-top:70px;font-size:128px;color:#ffffff">$nums[$r]</div>~;
} else {
if ($vars{'output_web'}) {
my $num = $nums[$r];
my @size = (92,150);
if ($num > 10) {
@size = (64,92);
}
my $counter = 0;
my $whilecounter;
while ($whilecounter < 256 && $num > 10) {
$cardcolor = $ctype[int(rand(4))];
if ($vars{"output_web_cache_col_${r}_$counter"} ne "") {
$cardcolor = $vars{"output_web_cache_col_${r}_$counter"};
}
$HTML[$r] .= qq~<input type="hidden" name="output_web_cache_col_${r}_$counter" value="$cardcolor">~;
$HTML[$r] .= qq~<div class="fl mr10 mb10 box_white p5"><img class="block$size[0]" src="/images/cards/10$cardcolor.jpg" style="height:$size[1]px" alt="10"></div>~;
$num = $num - 10;
$counter++;
}
$cardcolor = $ctype[int(rand(4))];
if ($vars{"output_web_cache_col_${r}_$counter"} ne "") {
$cardcolor = $vars{"output_web_cache_col_${r}_$counter"};
}
$HTML[$r] .= qq~<input type="hidden" name="output_web_cache_col_${r}_$counter" value="$cardcolor">~;
$HTML[$r] .= qq~<div class="fl mr10 mb10 box_white p5"><img class="block$size[0]" src="/images/cards/$num$cardcolor.jpg" style="height:$size[1]px" alt="$num"></div>~;
}
}
if ($vars{'output_paper'}) {
my $img_switches;
if ($r == 2 && $max_r == 2) {
$img_switches = "ew";
}
if ($r == 2 && $op eq "add" && $nums[0] < 11 && $nums[1] < 11) {
my $use_x = $pdf_x+$r*28+9;
my $use_y = $pdf_y+7;
ONO::Lib::PDF::Draw->image($canvas,$use_x,$use_y,10,15,"images/cards/$nums[1]$cardcolor.jpg",0.5,1,$img_switches);
@corr_cache = (@corr_cache,"image:$use_x:$use_y:10:15:images/cards/$nums[1]$cardcolor.jpg:0.5:1");
my $use_x = $pdf_x+$r*28+3;
my $use_y = $pdf_y+12;
ONO::Lib::PDF::Draw->image($canvas,$use_x,$use_y,10,15,"images/cards/$nums[0]$cardcolor.jpg",0.5,1,$img_switches);
@corr_cache = (@corr_cache,"image:$use_x:$use_y:10:15:images/cards/$nums[0]$cardcolor.jpg:0.5:1");
} else {
if (!$r && $op eq "mul") {
my $use_x = $pdf_x+11;
my $use_y = $pdf_y+20.5;
ONO::Lib::PDF::Draw->color("0:255:255:255");
ONO::Lib::PDF::Draw->font("HB",28);
ONO::Lib::PDF::Draw->text($canvas,$use_x,$use_y,$nums[0],"c");
ONO::Lib::PDF::Draw->font("HB",14);
ONO::Lib::PDF::Draw->color();
@corr_cache = (@corr_cache,"text:$use_x:$use_y:$nums[0]:c");
} else {
if ($nums[$r] < 11) {
my $use_x = $pdf_x+$r*28+5;
my $use_y = $pdf_y+8;
ONO::Lib::PDF::Draw->image($canvas,$use_x,$use_y,12,18,"images/cards/$nums[$r]$cardcolor.jpg",0.5,1,$img_switches);
@corr_cache = (@corr_cache,"image:$use_x:$use_y:12:18:images/cards/$nums[$r]$cardcolor.jpg:0.5:1");
} else {
my $card = $nums[$r]-10;
my $use_x = $pdf_x+$r*28+9;
my $use_y = $pdf_y+7;
ONO::Lib::PDF::Draw->image($canvas,$use_x,$use_y,10,15,"images/cards/10$cardcolor.jpg",0.5,1,$img_switches);
@corr_cache = (@corr_cache,"image:$use_x:$use_y:10:15:images/cards/10$cardcolor.jpg:0.5:1");
my $use_x = $pdf_x+$r*28+3;
my $use_y = $pdf_y+12;
ONO::Lib::PDF::Draw->image($canvas,$use_x,$use_y,10,15,"images/cards/$card$cardcolor.jpg",0.5,1,$img_switches);
@corr_cache = (@corr_cache,"image:$use_x:$use_y:10:15:images/cards/$card$cardcolor.jpg:0.5:1");
}
}
}
}
}
}
if ($type eq "images") {
my $img = $vars{'output_web_cache_img'};
if ($vars{'output_web_cache_img'} eq "") {
$img = ONO::FW::Edu::Apps::Modules::MathCount->random_img($defs_ref,$defs_num);
}
$HTML[0] .= qq~<input type="hidden" name="output_web_cache_img" value="$img">~;
if ($vars{'output_web'}) {
for (my $r = 0; $r < $max_r; $r++) {
if ($r == 0) {
$HTML[$r] .= qq~<div class="bold center mr10" style="padding-top:70px;font-size:128px">$nums[$r]</div>~;
} else {
my $size = 150;
if ($nums[$r] > 1) {
$size = 64;
}
if ($nums[$r] > 4) {
$size = 48;
}
if ($nums[$r] > 9) {
$size = 32;
}
if ($nums[$r] > 14) {
$size = 24;
}
for (my $a = 0; $a < $nums[$r]; $a++) {
$HTML[$r] .= qq~<div class="box_paper p2 fl mr5 mb5" style="overflow:hidden"><img class="block$size" src="/images/pix/preview/rgb/$img.jpg" alt="image"></div>~;
}
}
}
}
if ($vars{'output_paper'}) {
for (my $r = 0; $r < $max_r_abs; $r++) {
my (@off_x,@off_y);
my $size = 22;
if ($nums[$r] == 2) {
$size = 12;
$off_x[1] = $off_y[1] = 10;
}
if ($nums[$r] == 3) {
$size = 11.5;
$off_x[1] = $off_y[2] = 10.5;
$off_y[1] = $off_x[2] = 2;
}
if ($nums[$r] == 4) {
$size = 10.5;
$off_x[1] = $off_y[2] = 11;
$off_y[1] = $off_x[2] = 0.5;
$off_x[3] = $off_y[3] = 11.5;
}
if ($nums[$r] == 5) {
$size = 9;
$off_x[1] = $off_y[2] = $off_x[3] = $off_y[3] = 13;
$off_x[4] = $off_y[4] = 6.5;
}
if ($nums[$r] > 5 && $nums[$r] < 10) {
$size = 7;
my $off;
if ($nums[$r] == 6) {
$off = 4;
}
$off_x[0] = $off_x[3] = 0;
$off_y[0] = $off_y[1] = $off_y[2] = $off;
$off_x[1] = $off_x[4] = $off_x[7] = 7.5;
$off_x[2] = $off_y[7] = $off_x[8] = $off_y[8] = $off_x[5] = $off_y[6] = 15;
$off_y[3] = $off_y[4] = $off_y[5] = 7.5+$off;
}
if ($nums[$r] > 9 && $nums[$r] < 15) {
$size = 5.5;
my $off;
if ($nums[$r] < 13) {
$off = 2.75;
}
$off_x[0] = $off_x[4] = $off_x[8] = $off_x[12] = 0;
$off_y[0] = $off_y[1] = $off_y[2] = $off_y[3] = $off;
$off_x[1] = $off_x[5] = $off_x[9] = $off_x[13] = 5.5;
$off_x[2] = $off_x[6] = $off_x[10] = 11;
$off_x[3] = $off_x[7] = $off_x[11] = 16.5;
$off_y[4] = $off_y[5] = $off_y[6] = $off_y[7] = 5.5+$off;
$off_y[8] = $off_y[9] = $off_y[10] = $off_y[11] = 11+$off;
$off_y[12] = $off_y[13] = 16.5+$off;
}
if ($nums[$r] > 14) {
$size = 4;
my $off;
if ($nums[$r] < 16) {
$off = 3;
}
$off_x[0] = $off_x[5] = $off_x[10] = $off_x[15] = 0;
$off_y[0] = $off_y[1] = $off_y[2] = $off_y[3] = $off_y[4] = 1+$off;
$off_x[1] = $off_x[6] = $off_x[11] = $off_x[16] = 4.5;
$off_x[2] = $off_x[7] = $off_x[12] = $off_x[17] = 9;
$off_x[3] = $off_x[8] = $off_x[13] = $off_x[18] = 13.5;
$off_x[4] = $off_x[9] = $off_x[14] = $off_x[19] = 18;
$off_y[5] = $off_y[6] = $off_y[7] = $off_y[8] = $off_y[9] = 6.5+$off;
$off_y[10] = $off_y[11] = $off_y[12] = $off_y[13] = $off_y[14] = 12+$off;
$off_y[15] = $off_y[16] = $off_y[17] = $off_y[18] = $off_y[19] = 17.5+$off;
}
if (!$r && $op eq "mul") {
my $use_x = $pdf_x+11;
my $use_y = $pdf_y+20.5;
ONO::Lib::PDF::Draw->font("HB",28);
ONO::Lib::PDF::Draw->text($canvas,$use_x,$use_y,$nums[0],"c");
ONO::Lib::PDF::Draw->font("HB",14);
@corr_cache = (@corr_cache,"text:$use_x:$use_y:$nums[0]:c");
} else {
for (my $d = 0; $d < $nums[$r]; $d++) {
my $use_x = $pdf_x+$r*28+$off_x[$d];
my $use_y = $pdf_y+6+$off_y[$d];
my $use_b = int($size/4);
if ($r < $max_r) {
ONO::Lib::PDF::Draw->image($canvas,$use_x,$use_y,$size,$size,"images/pix/preview/rgb_low_quality/$img.jpg",0.5,$use_b);
}
@corr_cache = (@corr_cache,"image:$use_x:$use_y:$size:$size:images/pix/preview/rgb_low_quality/$img.jpg:0.5:$use_b");
}
}
}
}
}
if ($type eq "rods") {
if ($op eq "mul") {
if ($vars{'output_web'}) {
$HTML[0] .= qq~<div class="inline auto">
<div class="rel">
~;
for (my $b = 0; $b < 5; $b++) {
$HTML[0] .= ONO::FW::Edu::Apps::Modules::MathRods->rod_row(10);
}
for (my $b = 0; $b < $nums[0]; $b++) {
my $top = $b * 34;
$HTML[0] .= qq~ <div class="abs" style="top:${top}px">~;
$HTML[0] .= ONO::FW::Edu::Apps::Modules::MathRods->rod($nums[1],\@colors,1);
$HTML[0] .= qq~ </div>~;
}
$HTML[0] .= qq~ </div>
</div>
~;
}
for (my $b = 0; $b < 5; $b++) {
if ($vars{'output_paper'}) {
my $use_x = $pdf_x+17;
my $use_y = $pdf_y+6+$b*4.4;
ONO::Lib::PDF::Elements::Brick->brick($canvas,$use_x,$use_y,10,1,4.4,0.25);
@corr_cache = (@corr_cache,"brick:$use_x:$use_y:10:1:4.4:0.25");
if ($b < $nums[0]) {
my $use_x = $pdf_x+17;
my $use_y = $pdf_y+6+$b*4.4;
ONO::Lib::PDF::Elements::Brick->brick($canvas,$use_x,$use_y,$nums[1],1,4.4,0.25,$colors[$nums[1]-1]);
@corr_cache = (@corr_cache,"brick:$use_x:$use_y:$nums[1]:1:4.4:0.25:1");
}
}
}
} else {
my $add_x_opt;
if ($op eq "add") {
$add_x_opt = $nums[0];
}
if ($op eq "sub") {
$add_x_opt = $nums[0]-$nums[1];
}
if ($nums[0] < 11 && $nums[1] < 11 && $nums[2] < 11) {
for (my $b = 0; $b < 3; $b++) {
if ($vars{'output_web'}) {
$HTML[0] .= qq~<div class="inline auto">
<div class="rel">
~;
$HTML[0] .= ONO::FW::Edu::Apps::Modules::MathRods->rod_row(10);
my $left = 0;
if ($b == 1 && $op eq "add") {
$left = 32 * $nums[0];
}
if ($b == 1 && $op eq "sub") {
$left = 32 * $nums[2];
}
$HTML[0] .= qq~ <div class="abs" style="top:0px;left:${left}px">~;
$HTML[0] .= ONO::FW::Edu::Apps::Modules::MathRods->rod($nums[$b],\@colors,1);
$HTML[0] .= qq~ </div>
</div>
</div>
~;
if ($b == 0) {
$HTML[0] .= qq~<div class="p10 xlarge bold center">$op_symbol</div>~;
}
if ($b == 1) {
$HTML[0] .= qq~<div class="p10 xlarge bold center">=</div>~;
}
}
if ($vars{'output_paper'}) {
my $use_x = $pdf_x+17;
my $use_y = $pdf_y+6+$b*8.8;
ONO::Lib::PDF::Elements::Brick->brick($canvas,$use_x,$use_y,10,1,4.4,0.25);
@corr_cache = (@corr_cache,"brick:$use_x:$use_y:10:1:4.4:0.25");
my $add_x;
if ($b == 1) {
$add_x = $add_x_opt * 4.4;
my $use_x = $pdf_x+38;
my $use_y = $pdf_y+3.5+$b*9;
ONO::Lib::PDF::Draw->text_math_symbol($canvas,$use_x,$use_y,3,$op_symbol);
@corr_cache = (@corr_cache,"text_math_symbol:$use_x:$use_y:3:$op_symbol");
}
if ($b == 2) {
my $use_x = $pdf_x+38;
my $use_y = $pdf_y+3.5+$b*9;
ONO::Lib::PDF::Draw->text_math_symbol($canvas,$use_x,$use_y,3,"=");
@corr_cache = (@corr_cache,"text_math_symbol:$use_x:$use_y:3:=");
}
if ($nums[$b] && $b < $max_r) {
my $use_x = $pdf_x+17+$add_x;
my $use_y = $pdf_y+6+$b*8.8;
ONO::Lib::PDF::Elements::Brick->brick($canvas,$use_x,$use_y,$nums[$b],1,4.4,0.25,$colors[$nums[$b]-1]);
@corr_cache = (@corr_cache,"brick:$use_x:$use_y:$nums[$b]:1:4.4:0.25:1");
}
}
}
} else {
for (my $b = 0; $b < 3; $b++) {
if ($vars{'output_web'}) {
$HTML[0] .= qq~<div class="inline auto">
<div class="rel">
~;
$HTML[0] .= ONO::FW::Edu::Apps::Modules::MathRods->rod_row(20);
my $left = 0;
if ($b == 1 && $op eq "add") {
$left = 32 * $nums[0];
}
if ($b == 1 && $op eq "sub") {
$left = 32 * $nums[2];
}
$HTML[0] .= qq~ <div class="abs" style="top:0px;left:${left}px">~;
if ($nums[$b] > 10) {
$HTML[0] .= ONO::FW::Edu::Apps::Modules::MathRods->rod(10,\@colors,1);
$HTML[0] .= qq~ <div class="abs" style="top:0px;left:320px">~;
$HTML[0] .= ONO::FW::Edu::Apps::Modules::MathRods->rod($nums[$b]-10,\@colors,1);
$HTML[0] .= qq~ </div>~;
} else {
$HTML[0] .= ONO::FW::Edu::Apps::Modules::MathRods->rod($nums[$b],\@colors,1);
}
$HTML[0] .= qq~ </div>
</div>
</div>
~;
if ($b == 0) {
$HTML[0] .= qq~<div class="p10 xlarge bold center">$op_symbol</div>~;
}
if ($b == 1) {
$HTML[0] .= qq~<div class="p10 xlarge bold center">=</div>~;
}
}
if ($vars{'output_paper'}) {
my $use_x = $pdf_x+1;
my $use_y = $pdf_y+6+$b*9;
ONO::Lib::PDF::Elements::Brick->brick($canvas,$use_x,$use_y,20,1,3.8,0.25);
@corr_cache = (@corr_cache,"brick:$use_x:$use_y:20:1:3.8:0.25");
my $add_x;
if ($b == 1) {
$add_x = $add_x_opt * 3.8;
my $use_x = $pdf_x+38;
my $use_y = $pdf_y+3.5+$b*9;
ONO::Lib::PDF::Draw->text_math_symbol($canvas,$use_x,$use_y,3,$op_symbol);
@corr_cache = (@corr_cache,"text_math_symbol:$use_x:$use_y:3:$op_symbol");
}
if ($b == 2) {
my $use_x = $pdf_x+38;
my $use_y = $pdf_y+3.5+$b*9;
ONO::Lib::PDF::Draw->text_math_symbol($canvas,$use_x,$use_y,3,"=");
@corr_cache = (@corr_cache,"text_math_symbol:$use_x:$use_y:3:=");
}
if ($b < 3) {
if ($nums[$b] > 10) {
my $use_x = $pdf_x+1+$add_x;
my $use_y = $pdf_y+6+$b*9;
if ($b < $max_r) {
ONO::Lib::PDF::Elements::Brick->brick($canvas,$use_x,$use_y,10,1,3.8,0.25,$colors[9]);
}
@corr_cache = (@corr_cache,"brick:$use_x:$use_y:10:1:3.8:0.25:1");
my $use_x = $pdf_x+1+38+$add_x;
my $use_y = $pdf_y+6+$b*9;
my $use_n = $nums[$b]-10;
if ($b < $max_r) {
ONO::Lib::PDF::Elements::Brick->brick($canvas,$use_x,$use_y,$use_n,1,3.8,0.25,$colors[$nums[$b]-11]);
}
@corr_cache = (@corr_cache,"brick:$use_x:$use_y:$use_n:1:3.8:0.25:1");
} else {
my $use_x = $pdf_x+1+$add_x;
my $use_y = $pdf_y+6+$b*9;
if ($b < $max_r) {
ONO::Lib::PDF::Elements::Brick->brick($canvas,$use_x,$use_y,$nums[$b],1,3.8,0.25,$colors[$nums[$b]-1]);
}
@corr_cache = (@corr_cache,"brick:$use_x:$use_y:$nums[$b]:1:3.8:0.25:1");
}
}
}
}
}
}
}
if ($type eq "money") {
my $moneytype = $vars{'output_web_cache_money_type'};
if ($moneytype eq "") {
$moneytype = $vars{'app_input_currency'};
}
my (
$moneybig,
@moneyopts,
) = ONO::FW::Edu::Apps::Modules::MathCount->money_opts("",$moneytype);
my $DIR = "images/money/$moneytype/128";
for (my $r = 0; $r < 3; $r++) {
if (!$r && $op eq "mul") {
if ($vars{'output_web'}) {
$HTML[$r] = qq~<div class="bold center mr10" style="padding-top:70px;font-size:128px">$nums[$r]</div>~;
}
if ($vars{'output_paper'}) {
my $use_x = $pdf_x+11;
my $use_y = $pdf_y+20.5;
ONO::Lib::PDF::Draw->font("HB",28);
ONO::Lib::PDF::Draw->text($canvas,$use_x,$use_y,$nums[0],"c");
ONO::Lib::PDF::Draw->font("HB",14);
@corr_cache = (@corr_cache,"text:$use_x:$use_y:$nums[0]:c");
}
} else {
my $opt = "1c";
my @vals = ("01");
if ($nums[$r] == 2) {
if (int(rand(100)) > 33) {
$opt = "1c";
@vals = ("02");
} else {
$opt = "2c";
@vals = ("01","01");
}
}
if ($nums[$r] == 3) {
if (int(rand(100)) > 33) {
$opt = "2c";
@vals = ("01","02");
} else {
$opt = "3c";
@vals = ("01","01","01");
}
}
if ($nums[$r] == 4) {
if (int(rand(100)) > 33) {
$opt = "2c";
@vals = ("02","02");
} else {
if (int(rand(100)) > 33) {
$opt = "3c";
@vals = ("01","01","02");
} else {
$opt = "4c";
@vals = ("01","01","01","01");
}
}
}
if ($nums[$r] == 5) {
if (int(rand(100)) > 33) {
if ($moneytype eq "chf") {
$opt = "1c";
@vals = ("05");
} else {
$opt = "1m";
@vals = ("05");
}
} else {
if (int(rand(100)) > 33) {
$opt = "3c";
@vals = ("01","02","02");
} else {
$opt = "4c";
@vals = ("01","01","01","02");
}
}
}
if ($nums[$r] == 6) {
if (int(rand(100)) > 50) {
if ($moneytype eq "chf") {
$opt = "2c";
@vals = ("01","05");
} else {
$opt = "1c1m";
@vals = ("01","05");
}
} else {
if (int(rand(100)) > 50) {
$opt = "3c";
@vals = ("02","02","02");
} else {
$opt = "4c";
@vals = ("01","01","02","02");
}
}
}
if ($nums[$r] == 7) {
if (int(rand(100)) > 50) {
if ($moneytype eq "chf") {
$opt = "2c";
@vals = ("02","05");
} else {
$opt = "1c1m";
@vals = ("02","05");
}
} else {
if (int(rand(100)) > 50) {
$opt = "2c1m";
@vals = ("01","01","05");
} else {
$opt = "4c";
@vals = ("01","02","02","02");
}
}
}
if ($nums[$r] == 8) {
if (int(rand(100)) > 50) {
if ($moneytype eq "chf") {
$opt = "3c";
@vals = ("01","02","05");
} else {
$opt = "2c1m";
@vals = ("01","02","05");
}
} else {
$opt = "4c";
@vals = ("02","02","02","02");
}
}
if ($nums[$r] == 9) {
if ($moneytype eq "chf") {
$opt = "3c";
@vals = ("02","02","05");
} else {
$opt = "2c1m";
@vals = ("02","02","05");
}
}
if ($nums[$r] == 10) {
if (int(rand(100)) > 50) {
$opt = "1m";
@vals = ("10");
} else {
if ($moneytype eq "chf") {
$opt = "2c";
@vals = ("05","05");
} else {
$opt = "2m";
@vals = ("05","05");
}
}
}
if ($nums[$r] == 11) {
$opt = "1c1m";
@vals = ("01","10");
}
if ($nums[$r] == 12) {
if (int(rand(100)) > 50) {
$opt = "1c1m";
@vals = ("02","10");
} else {
$opt = "2c1m";
@vals = ("01","01","10");
}
}
if ($nums[$r] == 13) {
$opt = "2c1m";
@vals = ("01","02","10");
}
if ($nums[$r] == 14) {
$opt = "2c1m";
@vals = ("02","02","10");
}
if ($nums[$r] == 15) {
if ($moneytype eq "chf") {
$opt = "1c1m";
@vals = ("05","10");
} else {
$opt = "2m";
@vals = ("05","10");
}
}
if ($nums[$r] == 16) {
if ($moneytype eq "chf") {
$opt = "2c1m";
@vals = ("01","05","10");
} else {
$opt = "1c2m";
@vals = ("01","05","10");
}
}
if ($nums[$r] == 17) {
if ($moneytype eq "chf") {
$opt = "2c1m";
@vals = ("02","05","10");
} else {
if (int(rand(100)) > 50) {
$opt = "1c2m";
@vals = ("02","05","10");
} else {
$opt = "2c2m";
@vals = ("01","01","05","10");
}
}
}
if ($nums[$r] == 18) {
if ($moneytype eq "chf") {
$opt = "3c1m";
@vals = ("01","02","05","10");
} else {
if (int(rand(100)) > 50) {
$opt = "3c2m";
@vals = ("01","01","01","05","10");
} else {
$opt = "2c2m";
@vals = ("01","02","05","10");
}
}
}
if ($nums[$r] == 19) {
if ($moneytype eq "chf") {
$opt = "3c1m";
@vals = ("02","02","05","10");
} else {
if (int(rand(100)) > 50) {
$opt = "2c2m";
@vals = ("02","02","05","10");
} else {
$opt = "3c2m";
@vals = ("01","01","02","05","10");
}
}
}
if ($nums[$r] == 20) {
if (int(rand(100)) > 50) {
$opt = "1m";
@vals = ("20");
} else {
if (int(rand(100)) > 50) {
$opt = "2m";
@vals = ("10","10");
} else {
if ($moneytype eq "chf") {
$opt = "2c1m";
@vals = ("05","05","10");
} else {
$opt = "3m";
@vals = ("05","05","10");
}
}
}
}
if ($vars{'output_web'} && ($r < $max_r || $vars{'app_input_display_result_image'})) {
if (!$vars{'output_web_exercise_running'}) {
@vals = ONO::Lib::Basic->randomize_array(@vals);
} else {
@vals = ();
for (my $m = 0; $m < 9; $m++) {
if ($vars{"output_web_cache_money_val_${r}_$m"} > 0) {
@vals = (@vals,$vars{"output_web_cache_money_val_${r}_$m"});
}
}
}
my $counter = 0;
foreach my $val (@vals) {
$HTML[$r] .= qq~<input type="hidden" name="output_web_cache_money_val_${r}_$counter" value="$val">~;
my $width = 48;
my $BO;
if ($moneytype eq "chf") {
if ($val > 5) {
$width = 92;
$BO = " bo";
}
} else {
if ($val > 2) {
$width = 92;
$BO = " bo";
}
}
$HTML[$r] .= qq~<div class="fl mr10 mb10$BO"><img class="block48" src="/$DIR/e0$val.jpg" style="width:${width}px" alt="$val"></div>~;
$counter++;
}
}
if ($vars{'output_paper'}) {
my $img_switches;
if ($r == 2 && $max_r == 2) {
$img_switches = "CEgw";
}
if ($opt eq "1c") {
my ($use_x,$use_y) = ($pdf_x+1+$r*28,$pdf_y+7);
ONO::Lib::PDF::Draw->image($canvas,$use_x,$use_y,20,20,"$DIR/e0$vals[0].jpg",0,0,$img_switches);
@corr_cache = (@corr_cache,"image:$use_x:$use_y:20:20:$DIR/e0$vals[0].jpg:0:0");
}
if ($opt eq "2c") {
my ($use_x,$use_y) = ($pdf_x+$r*28,$pdf_y+6);
ONO::Lib::PDF::Draw->image($canvas,$use_x,$use_y,11,11,"$DIR/e0$vals[0].jpg",0,0,$img_switches);
@corr_cache = (@corr_cache,"image:$use_x:$use_y:11:11:$DIR/e0$vals[0].jpg:0:0");
my ($use_x,$use_y) = ($pdf_x+11+$r*28,$pdf_y+17);
ONO::Lib::PDF::Draw->image($canvas,$use_x,$use_y,11,11,"$DIR/e0$vals[1].jpg",0,0,$img_switches);
@corr_cache = (@corr_cache,"image:$use_x:$use_y:11:11:$DIR/e0$vals[1].jpg:0:0");
}
if ($opt eq "3c") {
my ($use_x,$use_y) = ($pdf_x+6+$r*28,$pdf_y+6);
ONO::Lib::PDF::Draw->image($canvas,$use_x,$use_y,11,11,"$DIR/e0$vals[0].jpg",0,0,$img_switches);
@corr_cache = (@corr_cache,"image:$use_x:$use_y:11:11:$DIR/e0$vals[0].jpg:0:0");
my ($use_x,$use_y) = ($pdf_x+$r*28,$pdf_y+17);
ONO::Lib::PDF::Draw->image($canvas,$use_x,$use_y,11,11,"$DIR/e0$vals[1].jpg",0,0,$img_switches);
@corr_cache = (@corr_cache,"image:$use_x:$use_y:11:11:$DIR/e0$vals[1].jpg:0:0");
my ($use_x,$use_y) = ($pdf_x+11+$r*28,$pdf_y+17);
ONO::Lib::PDF::Draw->image($canvas,$use_x,$use_y,11,11,"$DIR/e0$vals[2].jpg",0,0,$img_switches);
@corr_cache = (@corr_cache,"image:$use_x:$use_y:11:11:$DIR/e0$vals[2].jpg:0:0");
}
if ($opt eq "4c") {
my ($use_x,$use_y) = ($pdf_x+$r*28,$pdf_y+6);
ONO::Lib::PDF::Draw->image($canvas,$use_x,$use_y,10.5,10.5,"$DIR/e0$vals[0].jpg",0,0,$img_switches);
@corr_cache = (@corr_cache,"image:$use_x:$use_y:10.5:10.5:$DIR/e0$vals[0].jpg:0:0");
my ($use_x,$use_y) = ($pdf_x+11.5+$r*28,$pdf_y+6);
ONO::Lib::PDF::Draw->image($canvas,$use_x,$use_y,10.5,10.5,"$DIR/e0$vals[1].jpg",0,0,$img_switches);
@corr_cache = (@corr_cache,"image:$use_x:$use_y:10.5:10.5:$DIR/e0$vals[1].jpg:0:0");
my ($use_x,$use_y) = ($pdf_x+$r*28,$pdf_y+17.5);
ONO::Lib::PDF::Draw->image($canvas,$use_x,$use_y,10.5,10.5,"$DIR/e0$vals[2].jpg",0,0,$img_switches);
@corr_cache = (@corr_cache,"image:$use_x:$use_y:10.5:10.5:$DIR/e0$vals[2].jpg:0:0");
my ($use_x,$use_y) = ($pdf_x+11.5+$r*28,$pdf_y+17.5);
ONO::Lib::PDF::Draw->image($canvas,$use_x,$use_y,10.5,10.5,"$DIR/e0$vals[3].jpg",0,0,$img_switches);
@corr_cache = (@corr_cache,"image:$use_x:$use_y:10.5:10.5:$DIR/e0$vals[3].jpg:0:0");
}
if ($opt eq "1m") {
my ($use_x,$use_y) = ($pdf_x+1+$r*28,$pdf_y+12);
ONO::Lib::PDF::Draw->image($canvas,$use_x,$use_y,20,10,"$DIR/e0$vals[0].jpg",0.5,0,$img_switches);
@corr_cache = (@corr_cache,"image:$use_x:$use_y:20:10:$DIR/e0$vals[0].jpg:0.5:0");
}
if ($opt eq "2m") {
my ($use_x,$use_y) = ($pdf_x+1+$r*28,$pdf_y+6);
ONO::Lib::PDF::Draw->image($canvas,$use_x,$use_y,20,10,"$DIR/e0$vals[0].jpg",0.5,0,$img_switches);
@corr_cache = (@corr_cache,"image:$use_x:$use_y:20:10:$DIR/e0$vals[0].jpg:0.5:0");
my ($use_x,$use_y) = ($pdf_x+1+$r*28,$pdf_y+18);
ONO::Lib::PDF::Draw->image($canvas,$use_x,$use_y,20,10,"$DIR/e0$vals[1].jpg",0.5,0,$img_switches);
@corr_cache = (@corr_cache,"image:$use_x:$use_y:20:10:$DIR/e0$vals[1].jpg:0.5:0");
}
if ($opt eq "3m") {
my ($use_x,$use_y) = ($pdf_x+1+$r*28,$pdf_y+6);
ONO::Lib::PDF::Draw->image($canvas,$use_x,$use_y,14,7,"$DIR/e0$vals[0].jpg",0.5,0,$img_switches);
@corr_cache = (@corr_cache,"image:$use_x:$use_y:14:7:$DIR/e0$vals[0].jpg:0.5:0");
my ($use_x,$use_y) = ($pdf_x+4+$r*28,$pdf_y+13.5);
ONO::Lib::PDF::Draw->image($canvas,$use_x,$use_y,14,7,"$DIR/e0$vals[1].jpg",0.5,0,$img_switches);
@corr_cache = (@corr_cache,"image:$use_x:$use_y:14:7:$DIR/e0$vals[1].jpg:0.5:0");
my ($use_x,$use_y) = ($pdf_x+7+$r*28,$pdf_y+21);
ONO::Lib::PDF::Draw->image($canvas,$use_x,$use_y,14,7,"$DIR/e0$vals[2].jpg",0.5,0,$img_switches);
@corr_cache = (@corr_cache,"image:$use_x:$use_y:14:7:$DIR/e0$vals[2].jpg:0.5:0");
}
if ($opt eq "1c1m") {
my ($use_x,$use_y) = ($pdf_x+6+$r*28,$pdf_y+6);
ONO::Lib::PDF::Draw->image($canvas,$use_x,$use_y,11,11,"$DIR/e0$vals[0].jpg",0,0,$img_switches);
@corr_cache = (@corr_cache,"image:$use_x:$use_y:11:11:$DIR/e0$vals[0].jpg:0:0");
my ($use_x,$use_y) = ($pdf_x+1+$r*28,$pdf_y+18);
ONO::Lib::PDF::Draw->image($canvas,$use_x,$use_y,20,10,"$DIR/e0$vals[1].jpg",0.5,0,$img_switches);
@corr_cache = (@corr_cache,"image:$use_x:$use_y:20:10:$DIR/e0$vals[1].jpg:0.5:0");
}
if ($opt eq "2c1m") {
my ($use_x,$use_y) = ($pdf_x+$r*28,$pdf_y+6);
ONO::Lib::PDF::Draw->image($canvas,$use_x,$use_y,10.5,10.5,"$DIR/e0$vals[0].jpg",0,0,$img_switches);
@corr_cache = (@corr_cache,"image:$use_x:$use_y:10.5:10.5:$DIR/e0$vals[0].jpg:0:0");
my ($use_x,$use_y) = ($pdf_x+11.5+$r*28,$pdf_y+6);
ONO::Lib::PDF::Draw->image($canvas,$use_x,$use_y,10.5,10.5,"$DIR/e0$vals[1].jpg",0,0,$img_switches);
@corr_cache = (@corr_cache,"image:$use_x:$use_y:10.5:10.5:$DIR/e0$vals[1].jpg:0:0");
my ($use_x,$use_y) = ($pdf_x+1+$r*28,$pdf_y+18);
ONO::Lib::PDF::Draw->image($canvas,$use_x,$use_y,20,10,"$DIR/e0$vals[2].jpg",0.5,0,$img_switches);
@corr_cache = (@corr_cache,"image:$use_x:$use_y:20:10:$DIR/e0$vals[2].jpg:0.5:0");
}
if ($opt eq "3c1m") {
my ($use_x,$use_y) = ($pdf_x+$r*28,$pdf_y+6);
ONO::Lib::PDF::Draw->image($canvas,$use_x,$use_y,7,7,"$DIR/e0$vals[0].jpg",0,0,$img_switches);
@corr_cache = (@corr_cache,"image:$use_x:$use_y:7:7:$DIR/e0$vals[0].jpg:0:0");
my ($use_x,$use_y) = ($pdf_x+7.5+$r*28,$pdf_y+6);
ONO::Lib::PDF::Draw->image($canvas,$use_x,$use_y,7,7,"$DIR/e0$vals[1].jpg",0,0,$img_switches);
@corr_cache = (@corr_cache,"image:$use_x:$use_y:7:7:$DIR/e0$vals[1].jpg:0:0");
my ($use_x,$use_y) = ($pdf_x+15+$r*28,$pdf_y+6);
ONO::Lib::PDF::Draw->image($canvas,$use_x,$use_y,7,7,"$DIR/e0$vals[2].jpg",0,0,$img_switches);
@corr_cache = (@corr_cache,"image:$use_x:$use_y:7:7:$DIR/e0$vals[2].jpg:0:0");
my ($use_x,$use_y) = ($pdf_x+1+$r*28,$pdf_y+18);
ONO::Lib::PDF::Draw->image($canvas,$use_x,$use_y,20,10,"$DIR/e0$vals[3].jpg",0.5,0,$img_switches);
@corr_cache = (@corr_cache,"image:$use_x:$use_y:20:10:$DIR/e0$vals[3].jpg:0.5:0");
}
if ($opt eq "1c2m") {
my ($use_x,$use_y) = ($pdf_x+1+$r*28,$pdf_y+6);
ONO::Lib::PDF::Draw->image($canvas,$use_x,$use_y,14,7,"$DIR/e0$vals[1].jpg",0.5,0,$img_switches);
@corr_cache = (@corr_cache,"image:$use_x:$use_y:14:7:$DIR/e0$vals[1].jpg:0.5:0");
my ($use_x,$use_y) = ($pdf_x+7+$r*28,$pdf_y+21);
ONO::Lib::PDF::Draw->image($canvas,$use_x,$use_y,14,7,"$DIR/e0$vals[2].jpg",0.5,0,$img_switches);
@corr_cache = (@corr_cache,"image:$use_x:$use_y:14:7:$DIR/e0$vals[2].jpg:0.5:0");
my ($use_x,$use_y) = ($pdf_x+8+$r*28,$pdf_y+13.5);
ONO::Lib::PDF::Draw->image($canvas,$use_x,$use_y,7,7,"$DIR/e0$vals[0].jpg",0,0,$img_switches);
@corr_cache = (@corr_cache,"image:$use_x:$use_y:7:7:$DIR/e0$vals[0].jpg:0:0");
}
if ($opt eq "2c2m") {
my ($use_x,$use_y) = ($pdf_x+1+$r*28,$pdf_y+6);
ONO::Lib::PDF::Draw->image($canvas,$use_x,$use_y,14,7,"$DIR/e0$vals[2].jpg",0.5,0,$img_switches);
@corr_cache = (@corr_cache,"image:$use_x:$use_y:14:7:$DIR/e0$vals[2].jpg:0.5:0");
my ($use_x,$use_y) = ($pdf_x+7+$r*28,$pdf_y+21);
ONO::Lib::PDF::Draw->image($canvas,$use_x,$use_y,14,7,"$DIR/e0$vals[3].jpg",0.5,0,$img_switches);
@corr_cache = (@corr_cache,"image:$use_x:$use_y:14:7:$DIR/e0$vals[3].jpg:0.5:0");
my ($use_x,$use_y) = ($pdf_x+4+$r*28,$pdf_y+13.5);
ONO::Lib::PDF::Draw->image($canvas,$use_x,$use_y,7,7,"$DIR/e0$vals[0].jpg",0,0,$img_switches);
@corr_cache = (@corr_cache,"image:$use_x:$use_y:7:7:$DIR/e0$vals[0].jpg:0:0");
my ($use_x,$use_y) = ($pdf_x+12+$r*28,$pdf_y+13.5);
ONO::Lib::PDF::Draw->image($canvas,$use_x,$use_y,7,7,"$DIR/e0$vals[1].jpg",0,0,$img_switches);
@corr_cache = (@corr_cache,"image:$use_x:$use_y:7:7:$DIR/e0$vals[1].jpg:0:0");
}
if ($opt eq "3c2m") {
my ($use_x,$use_y) = ($pdf_x+1+$r*28,$pdf_y+6);
ONO::Lib::PDF::Draw->image($canvas,$use_x,$use_y,14,7,"$DIR/e0$vals[3].jpg",0.5,0,$img_switches);
@corr_cache = (@corr_cache,"image:$use_x:$use_y:14:7:$DIR/e0$vals[3].jpg:0.5:0");
my ($use_x,$use_y) = ($pdf_x+7+$r*28,$pdf_y+21);
ONO::Lib::PDF::Draw->image($canvas,$use_x,$use_y,14,7,"$DIR/e0$vals[4].jpg",0.5,0,$img_switches);
@corr_cache = (@corr_cache,"image:$use_x:$use_y:14:7:$DIR/e0$vals[4].jpg:0.5:0");
my ($use_x,$use_y) = ($pdf_x+0+$r*28,$pdf_y+13.5);
ONO::Lib::PDF::Draw->image($canvas,$use_x,$use_y,7,7,"$DIR/e0$vals[0].jpg",0,0,$img_switches);
@corr_cache = (@corr_cache,"image:$use_x:$use_y:7:7:$DIR/e0$vals[0].jpg:0:0");
my ($use_x,$use_y) = ($pdf_x+7.5+$r*28,$pdf_y+13.5);
ONO::Lib::PDF::Draw->image($canvas,$use_x,$use_y,7,7,"$DIR/e0$vals[1].jpg",0,0,$img_switches);
@corr_cache = (@corr_cache,"image:$use_x:$use_y:7:7:$DIR/e0$vals[1].jpg:0:0");
my ($use_x,$use_y) = ($pdf_x+15+$r*28,$pdf_y+13.5);
ONO::Lib::PDF::Draw->image($canvas,$use_x,$use_y,7,7,"$DIR/e0$vals[2].jpg",0,0,$img_switches);
@corr_cache = (@corr_cache,"image:$use_x:$use_y:7:7:$DIR/e0$vals[2].jpg:0:0");
}
}
}
}
}
return ($WEB,\@HTML,\@corr_cache,$DEBUG);
}
###################################################################
#### THAT'S IT :-D
###################################################################
1;
__END__