… | |
… | |
1000 | |
1000 | |
1001 | our @ISA = CFClient::UI::Bin::; |
1001 | our @ISA = CFClient::UI::Bin::; |
1002 | |
1002 | |
1003 | use CFClient::OpenGL; |
1003 | use CFClient::OpenGL; |
1004 | |
1004 | |
1005 | my @tex = |
1005 | my $bg = |
|
|
1006 | new_from_file CFClient::Texture CFClient::find_rcfile "d1_bg.png", |
|
|
1007 | mipmap => 1, wrap => 1; |
|
|
1008 | |
|
|
1009 | my @border = |
1006 | map { new_from_file CFClient::Texture CFClient::find_rcfile $_, mipmap => 1 } |
1010 | map { new_from_file CFClient::Texture CFClient::find_rcfile $_, mipmap => 1 } |
1007 | qw(d1_bg.png d1_border_top.png d1_border_right.png d1_border_left.png d1_border_bottom.png); |
1011 | qw(d1_border_top.png d1_border_right.png d1_border_left.png d1_border_bottom.png); |
1008 | |
1012 | |
1009 | sub new { |
1013 | sub new { |
1010 | my $class = shift; |
1014 | my $class = shift; |
1011 | |
1015 | |
1012 | my $self = $class->SUPER::new ( |
1016 | my $self = $class->SUPER::new ( |
… | |
… | |
1127 | glTexEnv GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE; |
1131 | glTexEnv GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE; |
1128 | |
1132 | |
1129 | my $border = $self->border; |
1133 | my $border = $self->border; |
1130 | |
1134 | |
1131 | glColor @{ $self->{border_bg} }; |
1135 | glColor @{ $self->{border_bg} }; |
1132 | $tex[1]->draw_quad_alpha (0, 0, $w, $border); |
1136 | $border[0]->draw_quad_alpha (0, 0, $w, $border); |
1133 | $tex[3]->draw_quad_alpha (0, $border, $border, $ch); |
1137 | $border[1]->draw_quad_alpha (0, $border, $border, $ch); |
1134 | $tex[2]->draw_quad_alpha ($w - $border, $border, $border, $ch); |
1138 | $border[2]->draw_quad_alpha ($w - $border, $border, $border, $ch); |
1135 | $tex[4]->draw_quad_alpha (0, $h - $border, $w, $border); |
1139 | $border[3]->draw_quad_alpha (0, $h - $border, $w, $border); |
1136 | |
1140 | |
1137 | if (@{$self->{bg}} < 4 || $self->{bg}[3]) { |
1141 | if (@{$self->{bg}} < 4 || $self->{bg}[3]) { |
1138 | my $bg = $tex[0]; |
1142 | glColor @{ $self->{bg} }; |
1139 | |
1143 | |
1140 | # TODO: repeat texture not scale |
1144 | # TODO: repeat texture not scale |
|
|
1145 | # solve this better(?) |
1141 | my $rep_x = $cw / $bg->{w}; |
1146 | $bg->{s} = $cw / $bg->{w}; |
1142 | my $rep_y = $ch / $bg->{h}; |
1147 | $bg->{t} = $ch / $bg->{h}; |
1143 | |
|
|
1144 | glColor @{ $self->{bg} }; |
|
|
1145 | |
|
|
1146 | $bg->{s} = $rep_x; |
|
|
1147 | $bg->{t} = $rep_y; |
|
|
1148 | $bg->{wrap_mode} = 1; |
|
|
1149 | $bg->draw_quad_alpha ($border, $border, $cw, $ch); |
1148 | $bg->draw_quad_alpha ($border, $border, $cw, $ch); |
1150 | } |
1149 | } |
1151 | |
1150 | |
1152 | glDisable GL_TEXTURE_2D; |
1151 | glDisable GL_TEXTURE_2D; |
1153 | |
1152 | |