App-GUI-Juliagraph

 view release on metacpan or  search on metacpan

lib/App/GUI/Juliagraph/Compute/Image.pm  view on Meta::CPAN


    my $max_iter  =  int $set->{'constraint'}{'stop_nr'} ** 2;
    my $max_value =  int $set->{'constraint'}{'stop_value'} ** 2;
    my $zoom      = 140 * $set->{'constraint'}{'zoom'};
    my $schranke  = $max_value;

    my $color_index_max = $schranke + $set->{'mapping'}{'subgradient_size'};
    my ($colors, $background_color) = compute_colors( $set, $max_iter );
    for my $bar_name (keys %progress_bar){
        my $bar = $progress_bar{$bar_name};
        my $gradient_percent = 100 / @$colors;
        $bar->reset;
        next if $bar_name eq 'pen' and $sketch_factor;
        if ($bar_name eq 'background'){
            $bar->set_start_color( @$background_color );
            $bar->add_percentage( 100, $background_color );
        } else {
            if ($set->{'mapping'}{'use_subgradient'}){
                $bar->set_start_color( @{$colors->[0][0]} );

                my $subgradient_length = @{$colors->[0]};
                $gradient_percent /= $subgradient_length;
                my $color_counter = 0;
                for my $gradient_nr (0 .. $#$colors) {
                    for my $subgradient_pos (0 .. $subgradient_length - 1) {
                        $bar->add_percentage( $color_counter++ * $gradient_percent ,
                                              $colors->[$gradient_nr][$subgradient_pos] );
                    }
                }
            } else {
                $bar->set_start_color( @{$colors->[0]} );
                $bar->add_percentage( $_ * $gradient_percent , $colors->[$_] ) for 1 .. $#$colors;
            }
        }
        $bar->paint();
    }

    my $max_pixel_x  = $size->{x}-1;
    my $max_pixel_y  = $size->{y}-1;
    my $offset_x = (- $size->{'x'} / 2 / $zoom) + $set->{'constraint'}{'center_x'};
    my $offset_y = (- $size->{'y'} / 2 / $zoom) - $set->{'constraint'}{'center_y'};
    my $delta_x  = 1 / $zoom;

lib/App/GUI/Juliagraph/Frame/Tab/Constraints.pm  view on Meta::CPAN

    if ($val{'s'} + $val{'c'} + $val{'m'}  == 1){
        $self->{'coor_as_start'}->Enable(0) if $val{'s'};
        $self->{'coor_as_const'}->Enable(0) if $val{'c'};
        $self->{'coor_as_monom'}->Enable(0) if $val{'m'};
    } else {
        $self->{$_}->Enable(1) for qw/coor_as_start coor_as_const coor_as_monom/;
    }
}

sub move_center_position { # after mouse click
    my ( $self, $delta_x_percent, $delta_y_percent, $zoom_dir ) = @_;
    $self->PauseCallBack;
    my $zoom  =  $self->{'zoom'}->GetValue;
    my $cx = $self->{'center_x'}->GetValue;
    my $cy = $self->{'center_y'}->GetValue;
    my $d = sqrt( $delta_x_percent**2 + $delta_y_percent**2 );
    if ($zoom_dir){
        $self->{'zoom'}->SetValue( $zoom + (0.1 * $zoom_dir * $zoom) );
    } else {
        my $new_x = ($delta_x_percent / 2 / $zoom ) + $cx;
        my $new_y = -($delta_y_percent / 2 / $zoom ) + $cy;
        $self->{'center_x'}->SetValue( $new_x );
        $self->{'center_y'}->SetValue( $new_y );
    }
    $self->RestoreCallBack;
    $self->RunCallBack;
}

sub update_iter_count {
    my ( $self ) = @_;
    $self->{'tab'}{'mapping'}{'scale_max'}->SetValue( int $self->{'stop_nr'}->GetValue**2 ) if ref $self->{'tab'}{'mapping'};

lib/App/GUI/Juliagraph/Widget/ProgressBar.pm  view on Meta::CPAN

        my $dc = Wx::PaintDC->new( $cpanel );
        my $bg_color = Wx::Colour->new( 255, 255, 255 );
        my ($x, $y) = ( $self->GetSize->GetWidth, $self->GetSize->GetHeight );
        $dc->SetBackground( Wx::Brush->new( $bg_color, &Wx::wxBRUSHSTYLE_SOLID ) );
        $dc->Clear();

        my $l_pos = 0;
        my $l_color = Wx::Colour->new( @{$self->{'color'}} );
        for my $entry (@{$self->{'rainbow'}}) {
            my $r_color = Wx::Colour->new( @{$entry->{'color'}} );
            my $r_pos = $x * $entry->{'percent'} / 100;
            $dc->GradientFillLinear( Wx::Rect->new( $l_pos, 0, $r_pos, $y ), $l_color, $r_color );
            $l_pos = $r_pos;
            $l_color = $r_color;
        }
    } );

    $self;
}

sub reset {

lib/App/GUI/Juliagraph/Widget/ProgressBar.pm  view on Meta::CPAN

    $self->{'rainbow'} = [];
    $self->paint;
}

sub set_start_color {
    my ( $self, $r, $g, $b ) = @_;
    return unless defined $b;
    $self->{'color'} = [$r, $g, $b];
}

sub add_percentage {
    my ( $self, $percent, $color ) = @_;
    return unless defined $percent and $percent <= 100 and $percent >= 0
        and $percent > $self->get_percentage and ref $color eq 'ARRAY' and @$color == 3;
    push @{$self->{'rainbow'}}, {color => $color, percent => $percent};
}

sub get_percentage { (@{$_[0]->{'rainbow'}}) ? $_[0]->{'rainbow'}[-1]{'percent'} : 0 }

sub paint          { $_[0]->Refresh }


1;



( run in 0.449 second using v1.01-cache-2.11-cpan-709fd43a63f )