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.73 by root, Tue Apr 11 18:06:53 2006 UTC vs.
Revision 1.74 by root, Tue Apr 11 19:31:18 2006 UTC

1package CFClient::UI; 1package CFClient::UI;
2 2
3use strict; 3use strict;
4 4
5use Scalar::Util; 5use Scalar::Util ();
6use List::Util ();
6 7
7use CFClient; 8use CFClient;
8 9
9our ($FOCUS, $HOVER, $GRAB); # various widgets 10our ($FOCUS, $HOVER, $GRAB); # various widgets
10 11
167 if ($self == $HOVER) { 168 if ($self == $HOVER) {
168 my ($x, $y) = @$self{qw(x y)}; 169 my ($x, $y) = @$self{qw(x y)};
169 170
170 glColor 1, 1, 1, 0.1; 171 glColor 1, 1, 1, 0.1;
171 glEnable GL_BLEND; 172 glEnable GL_BLEND;
173 glBlendFunc GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA;
172 glBegin GL_QUADS; 174 glBegin GL_QUADS;
173 glVertex $x , $y; 175 glVertex $x , $y;
174 glVertex $x + $self->{w}, $y; 176 glVertex $x + $self->{w}, $y;
175 glVertex $x + $self->{w}, $y + $self->{h}; 177 glVertex $x + $self->{w}, $y + $self->{h};
176 glVertex $x , $y + $self->{h}; 178 glVertex $x , $y + $self->{h};
451 453
452 my $tex = $self->{texture} 454 my $tex = $self->{texture}
453 or return; 455 or return;
454 456
455 glEnable GL_BLEND; 457 glEnable GL_BLEND;
458 glBlendFunc GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA;
456 glEnable GL_TEXTURE_2D; 459 glEnable GL_TEXTURE_2D;
457 glTexEnv GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE; 460 glTexEnv GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE;
458 461
459 $tex->draw_quad (0, 0, $w, $h); 462 $tex->draw_quad (0, 0, $w, $h);
460 463
561 564
562 my ($w, $h) = ($self->{w}, $self->{h}); 565 my ($w, $h) = ($self->{w}, $self->{h});
563 my ($cw, $ch) = ($self->child->{w}, $self->child->{h}); 566 my ($cw, $ch) = ($self->child->{w}, $self->child->{h});
564 567
565 glEnable GL_BLEND; 568 glEnable GL_BLEND;
569 glBlendFunc GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA;
566 glEnable GL_TEXTURE_2D; 570 glEnable GL_TEXTURE_2D;
567 glBlendFunc GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA;
568 glTexEnv GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE; 571 glTexEnv GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE;
569 572
570 my $top = $tex[1]; 573 my $top = $tex[1];
571 $top->draw_quad (0, 0, $w, $top->{h}); 574 $top->draw_quad (0, 0, $w, $top->{h});
572 575
836sub _draw { 839sub _draw {
837 my ($self) = @_; 840 my ($self) = @_;
838 841
839 my $tex = $self->{texture} ||= do { 842 my $tex = $self->{texture} ||= do {
840 $self->{layout}->set_width ($self->{w}); 843 $self->{layout}->set_width ($self->{w});
841 new_from_layout CFClient::Texture $self->{layout}; 844 new_from_layout CFClient::Texture $self->{layout}
842 }; 845 };
843 846
844 glEnable GL_BLEND; 847 glEnable GL_BLEND;
848 glBlendFunc GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA;
845 glEnable GL_TEXTURE_2D; 849 glEnable GL_TEXTURE_2D;
846 glBlendFunc GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA;
847 glTexEnv GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE; 850 glTexEnv GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE;
848 851
849 glColor @{$self->{fg}}; 852 glColor @{$self->{fg}};
850 853
851 my $x = 854 my $x =
852 $self->{align} < 0 ? 0 855 $self->{align} < 0 ? 0
853 : $self->{align} > 0 ? $self->{w} - $self->{texture}{w} 856 : $self->{align} > 0 ? $self->{w} - $tex->{w}
854 : ($self->{w} + $self->{texture}{w}) * 0.5; 857 : ($self->{w} - $tex->{w}) * 0.5;
855 858
856 $tex->draw_quad ($x, 0); 859 $tex->draw_quad ($x, 0);
857 860
861 glDisable GL_TEXTURE_2D;
858 glDisable GL_BLEND; 862 glDisable GL_BLEND;
859 glDisable GL_TEXTURE_2D; 863 glGetError and die;
860} 864}
861 865
862############################################################################# 866#############################################################################
863 867
864package CFClient::UI::Entry; 868package CFClient::UI::Entry;
1016package CFClient::UI::Slider; 1020package CFClient::UI::Slider;
1017 1021
1018use strict; 1022use strict;
1019 1023
1020use SDL::OpenGL; 1024use SDL::OpenGL;
1021use SDL::OpenGL::Constants;
1022 1025
1023our @ISA = CFClient::UI::DrawBG::; 1026our @ISA = CFClient::UI::DrawBG::;
1024 1027
1025sub size_request { 1028sub size_request {
1026 my ($self) = @_; 1029 my ($self) = @_;
1133 1136
1134use List::Util qw(min max); 1137use List::Util qw(min max);
1135 1138
1136use SDL; 1139use SDL;
1137use SDL::OpenGL; 1140use SDL::OpenGL;
1138use SDL::OpenGL::Constants;
1139 1141
1140our @ISA = CFClient::UI::Base::; 1142our @ISA = CFClient::UI::Base::;
1141 1143
1142sub new { 1144sub new {
1143 my $class = shift; 1145 my $class = shift;
1165 1167
1166sub update { 1168sub update {
1167 my ($self) = @_; 1169 my ($self) = @_;
1168 1170
1169 $self->{need_update} = 1; 1171 $self->{need_update} = 1;
1172 $self->SUPER::update;
1170} 1173}
1171 1174
1172sub _draw { 1175sub _draw {
1173 my ($self) = @_; 1176 my ($self) = @_;
1174 1177
1197 $yofs = $self->{yofs} = min $my, max $my + $::CONN->{maph} - $sh + 1, $self->{yofs}; 1200 $yofs = $self->{yofs} = min $my, max $my + $::CONN->{maph} - $sh + 1, $self->{yofs};
1198 } 1201 }
1199 1202
1200 glEnable GL_TEXTURE_2D; 1203 glEnable GL_TEXTURE_2D;
1201 glEnable GL_BLEND; 1204 glEnable GL_BLEND;
1205 glBlendFunc GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA;
1202 glTexEnv GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE; 1206 glTexEnv GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE;
1203 1207
1204 my $sw4 = ($sw + 3) & ~3; 1208 my $sw4 = ($sw + 3) & ~3;
1205 my $darkness = "\x00" x ($sw4 * $sh); 1209 my $darkness = "\x00" x ($sw4 * $sh);
1206 1210
1236# 1240#
1237# $lighting = $pb->get_pixels; 1241# $lighting = $pb->get_pixels;
1238# $lighting =~ s/(.)../$1/gs; 1242# $lighting =~ s/(.)../$1/gs;
1239# } 1243# }
1240 1244
1241 glBlendFunc GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA;
1242 glTexEnv GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE; 1245 glTexEnv GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE;
1243 1246
1244 $darkness = new CFClient::Texture 1247 $darkness = new CFClient::Texture
1245 width => $sw4, 1248 w => $sw4,
1246 height => $sh, 1249 h => $sh,
1247 data => $darkness, 1250 data => $darkness,
1248 internalformat => GL_ALPHA, 1251 internalformat => GL_ALPHA,
1249 format => GL_ALPHA; 1252 format => GL_ALPHA;
1250 1253
1251 glColor 0.45, 0.45, 0.45, 1; 1254 glColor 0.45, 0.45, 0.45, 1;

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines