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.19 by root, Sat Apr 8 14:04:14 2006 UTC vs.
Revision 1.20 by elmex, Sat Apr 8 17:21:01 2006 UTC

39 $self->{x} = $x; 39 $self->{x} = $x;
40 $self->{y} = $y; 40 $self->{y} = $y;
41 $self->{z} = $z if defined $z; 41 $self->{z} = $z if defined $z;
42} 42}
43 43
44sub needs_redraw {
45 0
46}
47
44sub size_request { 48sub size_request {
45 die "size_request is abtract"; 49 die "size_request is abtract";
46} 50}
47 51
48sub focus_in { 52sub focus_in {
109sub get { $_[0]->{child} } 113sub get { $_[0]->{child} }
110 114
111sub size_request { $_[0]->{child}->size_request if $_[0]->{child} } 115sub size_request { $_[0]->{child}->size_request if $_[0]->{child} }
112 116
113sub _draw { die "Containers can't be drawn!" } 117sub _draw { die "Containers can't be drawn!" }
118
119package Crossfire::Client::Widget::Window;
120
121our @ISA = Crossfire::Client::Widget::Container::;
122
123use SDL::OpenGL;
124
125sub add {
126 my ($self, $chld) = @_;
127 $self->SUPER::add ($chld);
128 $self->render_chld;
129}
130
131sub render_chld {
132 my ($self) = @_;
133 my $chld = $self->get;
134 my ($w, $h) = $self->size_request;
135
136 $self->{texture} =
137 Crossfire::Client::Texture->new_from_opengl (
138 $w, $h, sub {
139 my ($txt, $w, $h) = @_;
140 $chld->_draw;
141 }
142 );
143 $self->{texture}->upload;
144}
145
146sub size_request {
147 my ($self) = @_;
148 my $chld = $self->get
149 or return (0, 0);
150 $chld->size_request
151}
152
153sub _draw {
154 my ($self) = @_;
155
156 my $tex = $self->{texture}
157 or return;
158
159 warn "DRAW TEX: $tex->{width} $tex->{height}\n";
160 glEnable GL_BLEND;
161 glEnable GL_TEXTURE_2D;
162 glTexEnv GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE;
163 glBindTexture GL_TEXTURE_2D, $tex->{name};
164
165 glColor 1, 1, 1;
166
167 glBegin GL_QUADS;
168 glTexCoord 0, 0; glVertex 0 , 0;
169 glTexCoord 0, 1; glVertex 0 , $tex->{height};
170 glTexCoord 1, 1; glVertex $tex->{width}, $tex->{height};
171 glTexCoord 1, 0; glVertex $tex->{width}, 0;
172 glEnd;
173
174 glDisable GL_BLEND;
175 glDisable GL_TEXTURE_2D;
176}
114 177
115package Crossfire::Client::Widget::Frame; 178package Crossfire::Client::Widget::Frame;
116 179
117our @ISA = Crossfire::Client::Widget::Container::; 180our @ISA = Crossfire::Client::Widget::Container::;
118 181

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines