Adding the graphing engine.
This commit is contained in:
parent
683b580849
commit
27af7de00c
25 changed files with 3830 additions and 15 deletions
272
lib/WebGUI/Image/Color.pm
Normal file
272
lib/WebGUI/Image/Color.pm
Normal file
|
|
@ -0,0 +1,272 @@
|
|||
package WebGUI::Image::Color;
|
||||
|
||||
use strict;
|
||||
use Color::Calc;
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
sub canDelete {
|
||||
my $self = shift;
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
sub copy {
|
||||
my $self = shift;
|
||||
|
||||
return WebGUI::Image::Color->new($self->session, 'new', {%{$self->{_properties}}});
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
sub darken {
|
||||
my $self = shift;
|
||||
|
||||
my $newColor = $self->copy;
|
||||
|
||||
my $c = Color::Calc->new(OutputFormat => 'hex');
|
||||
|
||||
$newColor->setFillTriplet('#'.$c->dark($self->getFillTriplet));
|
||||
$newColor->setStrokeTriplet('#'.$c->dark($self->getStrokeTriplet));
|
||||
|
||||
return $newColor;
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
sub delete {
|
||||
my $self = shift;
|
||||
if ($self->canDelete) {
|
||||
$self->session->db->write('delete from imageColor where colorId=?', [
|
||||
$self->getId,
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
sub getFillColor {
|
||||
my $self = shift;
|
||||
|
||||
return $self->getFillTriplet.$self->getFillAlpha;
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
sub getFillTriplet {
|
||||
my $self = shift;
|
||||
|
||||
return $self->{_properties}->{fillTriplet};
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
sub getFillAlpha {
|
||||
my $self = shift;
|
||||
|
||||
return $self->{_properties}->{fillAlpha};
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
sub getId {
|
||||
my $self = shift;
|
||||
|
||||
return $self->{_properties}->{colorId};
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
sub getName {
|
||||
my $self = shift;
|
||||
|
||||
return $self->{_properties}->{name};
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
sub getStrokeColor {
|
||||
my $self = shift;
|
||||
|
||||
return $self->getStrokeTriplet.$self->getStrokeAlpha;
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
sub getStrokeTriplet {
|
||||
my $self = shift;
|
||||
|
||||
return $self->{_properties}->{strokeTriplet};
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
sub getStrokeAlpha {
|
||||
my $self = shift;
|
||||
|
||||
return $self->{_properties}->{strokeAlpha};
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
sub new {
|
||||
my $class = shift;
|
||||
my $session = shift;
|
||||
my $colorId = shift;
|
||||
my $properties = shift;
|
||||
|
||||
if ($colorId eq 'new') {
|
||||
unless (defined $properties) {
|
||||
$properties = {
|
||||
name => 'untitled',
|
||||
fillTriplet => '#000000',
|
||||
fillAlpha => '00',
|
||||
strokeTriplet => '#000000',
|
||||
strokeAlpha => '00',
|
||||
};
|
||||
}
|
||||
$properties->{colorId} = 'new';
|
||||
} elsif (!defined $properties) {
|
||||
$properties = $session->db->quickHashRef('select * from imageColor where colorId=?', [$colorId]);
|
||||
}
|
||||
|
||||
bless {_properties => $properties, _session => $session}, $class;
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
sub newByPalette {
|
||||
my ($sth, $row, @colors);
|
||||
my $class = shift;
|
||||
my $session = shift;
|
||||
my $paletteId = shift;
|
||||
|
||||
my $sth = $session->db->read('select imageColor.* from imageColor, imagePaletteColors where '.
|
||||
' imageColor.colorId=imagePaletteColors.colorId and paletteId=?', [
|
||||
$paletteId
|
||||
]);
|
||||
|
||||
while ($row = $sth->hashRef) {
|
||||
push(@colors, WebGUI::Image::Color->new($session, $row->{colorId}, $row));
|
||||
}
|
||||
|
||||
return \@colors;
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
sub session {
|
||||
my $self = shift;
|
||||
|
||||
return $self->{_session};
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
sub setFillColor {
|
||||
my $self = shift;
|
||||
my $color = shift;
|
||||
|
||||
if ($color =~ m/^(#[\da-f]{6})([\da-f]{2})?$/i) {
|
||||
$self->setFillTriplet($1);
|
||||
$self->setFillAlpha($2 || '00');
|
||||
} else {
|
||||
$self->session->errorHandler->fatal("Invalid fill color: ($color)");
|
||||
}
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
sub setFillTriplet {
|
||||
my $self = shift;
|
||||
my $triplet = shift;
|
||||
|
||||
if ($triplet =~ m/^#[\da-f]{6}$/i) {
|
||||
$self->{_properties}->{fillTriplet} = $triplet;
|
||||
$self->update;
|
||||
} else {
|
||||
$self->session->errorHandler->fatal("Invalid fill triplet: ($triplet)");
|
||||
}
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
sub setFillAlpha {
|
||||
my $self = shift;
|
||||
my $alpha = shift;
|
||||
|
||||
if ($alpha =~ m/^[\da-f]{2}$/i) {
|
||||
$self->{_properties}->{fillAlpha} = $alpha;
|
||||
$self->update;
|
||||
} else {
|
||||
$self->session->errorHandler->fatal("Invalid fill alpha: ($alpha)");
|
||||
}
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
sub setName {
|
||||
my $self = shift;
|
||||
my $name = shift;
|
||||
|
||||
$self->{_properties}->{name} = $name;
|
||||
$self->update;
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
sub setStrokeColor {
|
||||
my $self = shift;
|
||||
my $color = shift;
|
||||
|
||||
if ($color =~ m/^(#[\da-f]{6})([\da-f]{2})?$/i) {
|
||||
$self->setStrokeTriplet($1);
|
||||
$self->setStrokeAlpha($2 || '00');
|
||||
} else {
|
||||
$self->session->errorHandler->fatal("Invalid stroke color: ($color)");
|
||||
}
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
sub setStrokeTriplet {
|
||||
my $self = shift;
|
||||
my $triplet = shift;
|
||||
|
||||
if ($triplet =~ m/^#[\da-f]{6}$/i) {
|
||||
$self->{_properties}->{strokeTriplet} = $triplet;
|
||||
$self->update;
|
||||
} else {
|
||||
$self->session->errorHandler->fatal("Invalid stroke triplet: ($triplet)");
|
||||
}
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
sub setStrokeAlpha {
|
||||
my $self = shift;
|
||||
my $alpha = shift;
|
||||
|
||||
if ($alpha =~ m/^[\da-f]{2}$/i) {
|
||||
$self->{_properties}->{strokeAlpha} = $alpha;
|
||||
$self->update;
|
||||
} else {
|
||||
$self->session->errorHandler->fatal("Invalid stroke alpha: ($alpha)");
|
||||
}
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
sub update {
|
||||
my $self = shift;
|
||||
|
||||
$self->session->db->write("update imageColor set name=?, fillTriplet=?, fillAlpha=?, strokeTriplet=?, strokeAlpha=? where colorId=?", [
|
||||
$self->getName,
|
||||
$self->getFillTriplet,
|
||||
$self->getFillAlpha,
|
||||
$self->getStrokeTriplet,
|
||||
$self->getStrokeAlpha,
|
||||
$self->getId
|
||||
]);
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
sub save {
|
||||
my $self = shift;
|
||||
|
||||
if ($self->getId eq 'new') {
|
||||
$self->{_properties}->{colorId} = $self->session->id->generate;
|
||||
$self->session->db->write("insert into imageColor (colorId, name, fillTriplet, fillAlpha, strokeTriplet, strokeAlpha) values (?,?,?,?,?,?)", [
|
||||
$self->getId,
|
||||
$self->getName || 'untitled',
|
||||
$self->getFillTriplet || '#000000',
|
||||
$self->getFillAlpha || '00',
|
||||
$self->getStrokeTriplet || '#000000',
|
||||
$self->getStrokeAlpha || '00',
|
||||
]);
|
||||
}
|
||||
|
||||
$self->update;
|
||||
}
|
||||
|
||||
1;
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue