ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/deliantra/Deliantra-Client/DC/UI.pm
(Generate patch)

Comparing deliantra/Deliantra-Client/DC/UI.pm (file contents):
Revision 1.68 by root, Tue Apr 11 17:02:36 2006 UTC vs.
Revision 1.69 by root, Tue Apr 11 17:32:14 2006 UTC

992our @ISA = CFClient::Widget::DrawBG::; 992our @ISA = CFClient::Widget::DrawBG::;
993 993
994sub size_request { 994sub size_request {
995 my ($self) = @_; 995 my ($self) = @_;
996 996
997 my $w = 997 my $w = 20;
998 my $h = 10; 998 my $h = 10;
999 999
1000 $self->{vertical} ? ($h, $w) : ($w, $h) 1000 $self->{vertical} ? ($h, $w) : ($w, $h)
1001} 1001}
1002 1002
1012 vertical => 0, 1012 vertical => 0,
1013 @_ 1013 @_
1014 ) 1014 )
1015} 1015}
1016 1016
1017sub button_down {
1018 my ($self, $ev, $x, $y) = @_;
1019
1020 $self->SUPER::button_down ($ev, $x, $y);
1021 $self->mouse_motion ($ev, $x, $y);
1022}
1023
1024sub mouse_motion {
1025 my ($self, $ev, $x, $y) = @_;
1026
1027 if ($GRAB == $self) {
1028 my ($value, $lo, $hi, $page) = @{$self->{range}};
1029
1030 $x = $x * ($hi - $lo) / $self->{w} + $lo;
1031 $x = $lo if $x < $lo;
1032 $x = $hi - $page if $x > $hi - $page;
1033 $self->{range}[0] = $x;
1034
1035 $self->{changed}($x) if $self->{changed};
1036 $self->update;
1037 }
1038}
1039
1017sub _draw { 1040sub _draw {
1018 my ($self) = @_; 1041 my ($self) = @_;
1019 1042
1020 $self->SUPER::_draw (); 1043 $self->SUPER::_draw ();
1044
1045 glPushMatrix;
1021 1046
1022 my ($w, $h) = @$self{qw(w h)}; 1047 my ($w, $h) = @$self{qw(w h)};
1023 1048
1024 if ($self->{vertical}) { 1049 if ($self->{vertical}) {
1025 # draw a vertical slider like a rotated horizontal slider 1050 # draw a vertical slider like a rotated horizontal slider
1030 ($w, $h) = ($h, $w); 1055 ($w, $h) = ($h, $w);
1031 } 1056 }
1032 1057
1033 my $fg = $FOCUS == $self ? $self->{active_fg} : $self->{fg}; 1058 my $fg = $FOCUS == $self ? $self->{active_fg} : $self->{fg};
1034 my $bg = $FOCUS == $self ? $self->{active_bg} : $self->{bg}; 1059 my $bg = $FOCUS == $self ? $self->{active_bg} : $self->{bg};
1060
1061 my ($value, $lo, $hi, $page) = @{$self->{range}};
1062
1063 $page = int $page * $w / ($hi - $lo);
1064 $value = int +($value - $lo) * $w / ($hi - $lo);
1065
1066 $w -= $page;
1067 $page &= ~1;
1068 glTranslate $page * 0.5, 0, 0;
1035 1069
1036 glColor @$fg; 1070 glColor @$fg;
1037 glBegin GL_LINES; 1071 glBegin GL_LINES;
1038 glVertex 0, 0; glVertex 0, $h; 1072 glVertex 0, 0; glVertex 0, $h;
1039 glVertex $w - 1, 0; glVertex $w - 1, $h; 1073 glVertex $w - 1, 0; glVertex $w - 1, $h;
1040 glVertex 0, $h * 0.5; glVertex $w, $h * 0.5; 1074 glVertex 0, $h * 0.5; glVertex $w, $h * 0.5;
1041 glEnd; 1075 glEnd;
1076
1077 my $knob_a = $value - $page * 0.5;
1078 my $knob_b = $value + $page * 0.5;
1079
1080 glBegin GL_QUADS;
1081 glColor @$fg;
1082 glVertex $knob_a, 0;
1083 glVertex $knob_a, $h;
1084 glVertex $knob_b, $h;
1085 glVertex $knob_b, 0;
1086
1087 if ($knob_a < $knob_b - 2) {
1088 glColor @$bg;
1089 glVertex $knob_a + 1, 1;
1090 glVertex $knob_a + 1, $h - 1;
1091 glVertex $knob_b - 1, $h - 1;
1092 glVertex $knob_b - 1, 1;
1093 }
1094 glEnd;
1095
1096 glPopMatrix;
1042} 1097}
1043 1098
1044############################################################################# 1099#############################################################################
1045 1100
1046package CFClient::Widget::MapWidget; 1101package CFClient::Widget::MapWidget;

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines