* Made it look better when running under Haiku. Restricts the maximal font size to
12 points to make sure it'll look acceptable. * Fixed direct window rendering by disabling moving the animation area around (would have to be changed in DirectConnected() as well). * Refresh and density sliders now ResizeToPreferred(). * Some cleanup. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16206 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
parent
eefde19a76
commit
f2c54a03a6
@ -29,7 +29,7 @@ main()
|
||||
|
||||
ChartApp::ChartApp() : BApplication("application/x-vnd.Be.ChartDemo")
|
||||
{
|
||||
fWindow = new ChartWindow(BRect(120, 150, 629, 557), "Charts");
|
||||
fWindow = new ChartWindow(BRect(120, 150, 629, 589), "Charts");
|
||||
|
||||
// showing the window will also start the direct connection. If you
|
||||
// Sync() after the show, the direct connection will be established
|
||||
|
@ -10,27 +10,28 @@
|
||||
|
||||
#include "ChartWindow.h"
|
||||
|
||||
#include <Box.h>
|
||||
#include <Menu.h>
|
||||
#include <PopUpMenu.h>
|
||||
#include <File.h>
|
||||
#include <Path.h>
|
||||
#include <Entry.h>
|
||||
#include <Button.h>
|
||||
#include <Slider.h>
|
||||
#include <MenuItem.h>
|
||||
#include <CheckBox.h>
|
||||
#include <Directory.h>
|
||||
#include <PlaySound.h>
|
||||
#include <MenuField.h>
|
||||
#include <TextControl.h>
|
||||
#include <RadioButton.h>
|
||||
#include <AppFileInfo.h>
|
||||
#include <Application.h>
|
||||
#include <FindDirectory.h>
|
||||
#include <Bitmap.h>
|
||||
#include <Screen.h>
|
||||
#include <Box.h>
|
||||
#include <Button.h>
|
||||
#include <ByteOrder.h>
|
||||
#include <CheckBox.h>
|
||||
#include <Directory.h>
|
||||
#include <Entry.h>
|
||||
#include <File.h>
|
||||
#include <FindDirectory.h>
|
||||
#include <Menu.h>
|
||||
#include <MenuBar.h>
|
||||
#include <MenuField.h>
|
||||
#include <MenuItem.h>
|
||||
#include <Path.h>
|
||||
#include <PlaySound.h>
|
||||
#include <PopUpMenu.h>
|
||||
#include <RadioButton.h>
|
||||
#include <Screen.h>
|
||||
#include <Slider.h>
|
||||
#include <TextControl.h>
|
||||
|
||||
#include <math.h>
|
||||
#include <stdio.h>
|
||||
@ -44,6 +45,8 @@ enum {
|
||||
CRC_KEY = 0x1789feb3
|
||||
};
|
||||
|
||||
#define MAX_FONT_SIZE 12.0f
|
||||
|
||||
/* various offse, width, height and position used to align and
|
||||
set the various UI elements. */
|
||||
enum {
|
||||
@ -59,7 +62,7 @@ enum {
|
||||
SPACE_LABEL = 40,
|
||||
SPACE_POPUP = 53,
|
||||
INSTANT_LOAD = 205,
|
||||
LEFT_WIDTH = 72,
|
||||
LEFT_WIDTH = 90,
|
||||
LEFT_OFFSET = 2,
|
||||
STATUS_BOX = 96,
|
||||
STATUS_LABEL = 12,
|
||||
@ -70,11 +73,11 @@ enum {
|
||||
FULL_SCREEN = 16,
|
||||
AUTO_DEMO = 22,
|
||||
SECOND_THREAD = 16,
|
||||
COLORS_BOX = 145,
|
||||
COLORS_BOX = 146,
|
||||
COLORS_LABEL = 16,
|
||||
COLORS_OFFSET = 2,
|
||||
COLOR_CELL = 8,
|
||||
SPECIAL_BOX = 90,
|
||||
SPECIAL_BOX = 92,
|
||||
SPECIAL_LABEL = 16,
|
||||
SPECIAL_OFFSET = 2,
|
||||
STAR_DENSITY_H = 160,
|
||||
@ -163,15 +166,13 @@ static int32 light_gradient[8] = {
|
||||
};
|
||||
|
||||
|
||||
// #pragma mark helper classes
|
||||
|
||||
/*****************************************************
|
||||
** **
|
||||
** Implementation of various helper classes **
|
||||
** **
|
||||
*****************************************************/
|
||||
|
||||
/* multiply a vector by a constant */
|
||||
TPoint TPoint::operator* (const float k) const {
|
||||
TPoint
|
||||
TPoint::operator* (const float k) const
|
||||
{
|
||||
TPoint v;
|
||||
|
||||
v.x = x*k;
|
||||
@ -181,7 +182,9 @@ TPoint TPoint::operator* (const float k) const {
|
||||
}
|
||||
|
||||
/* substract 2 vectors */
|
||||
TPoint TPoint::operator- (const TPoint& v2) const {
|
||||
TPoint
|
||||
TPoint::operator- (const TPoint& v2) const
|
||||
{
|
||||
TPoint v;
|
||||
|
||||
v.x = x-v2.x;
|
||||
@ -201,7 +204,9 @@ TPoint TPoint::operator+ (const TPoint& v2) const {
|
||||
}
|
||||
|
||||
/* vectorial product of 2 vectors */
|
||||
TPoint TPoint::operator^ (const TPoint& v2) const {
|
||||
TPoint
|
||||
TPoint::operator^ (const TPoint& v2) const
|
||||
{
|
||||
TPoint v;
|
||||
|
||||
v.x = y*v2.z - z*v2.y;
|
||||
@ -211,12 +216,16 @@ TPoint TPoint::operator^ (const TPoint& v2) const {
|
||||
}
|
||||
|
||||
/* length of a vector */
|
||||
float TPoint::Length() const {
|
||||
float
|
||||
TPoint::Length() const
|
||||
{
|
||||
return sqrt(x*x + y*y + z*z);
|
||||
}
|
||||
|
||||
/* product of a vector by a matrix */
|
||||
TPoint TMatrix::operator* (const TPoint& v) const {
|
||||
TPoint
|
||||
TMatrix::operator* (const TPoint& v) const
|
||||
{
|
||||
TPoint res;
|
||||
|
||||
res.x = m[0][0]*v.x + m[1][0]*v.y + m[2][0]*v.z;
|
||||
@ -226,7 +235,8 @@ TPoint TMatrix::operator* (const TPoint& v) const {
|
||||
}
|
||||
|
||||
/* extract the Nth vector/column of a matrix. */
|
||||
TPoint TMatrix::Axis(int32 index)
|
||||
TPoint
|
||||
TMatrix::Axis(int32 index)
|
||||
{
|
||||
TPoint v;
|
||||
|
||||
@ -238,7 +248,9 @@ TPoint TMatrix::Axis(int32 index)
|
||||
|
||||
/* as we use rotation matrix, the invert of the matrix
|
||||
is equal to the transpose */
|
||||
TMatrix TMatrix::Transpose() const {
|
||||
TMatrix
|
||||
TMatrix::Transpose() const
|
||||
{
|
||||
TMatrix inv;
|
||||
|
||||
inv.m[0][0] = m[0][0];
|
||||
@ -254,7 +266,9 @@ TMatrix TMatrix::Transpose() const {
|
||||
}
|
||||
|
||||
/* set a spherical rotation matrix */
|
||||
void TMatrix::Set(const float alpha, const float theta, const float phi) {
|
||||
void
|
||||
TMatrix::Set(const float alpha, const float theta, const float phi)
|
||||
{
|
||||
float cD,sD,cI,sI,cA,sA;
|
||||
|
||||
/* trigonometry */
|
||||
@ -277,25 +291,16 @@ void TMatrix::Set(const float alpha, const float theta, const float phi) {
|
||||
m[2][2] = cD*cI;
|
||||
}
|
||||
|
||||
/* copy a setting into another */
|
||||
void ChartWindow::setting::Set(setting *master)
|
||||
{
|
||||
memcpy(this, master, sizeof(setting));
|
||||
}
|
||||
|
||||
// #pragma mark -
|
||||
|
||||
|
||||
|
||||
/*****************************************************
|
||||
** **
|
||||
** A couple global functions... **
|
||||
** **
|
||||
*****************************************************/
|
||||
|
||||
/* this function will play a wav sound file, with the specified
|
||||
following name, in the application folder. This is activated
|
||||
when you press the button "Auto demo". */
|
||||
void LaunchSound() {
|
||||
void
|
||||
LaunchSound()
|
||||
{
|
||||
/*
|
||||
BEntry soundFile;
|
||||
app_info info;
|
||||
@ -319,9 +324,10 @@ void LaunchSound() {
|
||||
|
||||
/* return the version_info of a file, described by its name
|
||||
and its generic folder (in find_directory syntax). */
|
||||
status_t get_file_version_info( directory_which dir,
|
||||
char *filename,
|
||||
version_info *info) {
|
||||
status_t
|
||||
get_file_version_info(directory_which dir,
|
||||
char *filename, version_info *info)
|
||||
{
|
||||
BPath path;
|
||||
BFile file;
|
||||
status_t res;
|
||||
@ -344,14 +350,9 @@ status_t get_file_version_info( directory_which dir,
|
||||
}
|
||||
|
||||
|
||||
// #pragma mark -
|
||||
|
||||
|
||||
/*****************************************************
|
||||
** **
|
||||
** Standard constructor and destructor. **
|
||||
** **
|
||||
*****************************************************/
|
||||
|
||||
ChartWindow::ChartWindow(BRect frame, const char *name)
|
||||
: BDirectWindow(frame, name, B_TITLED_WINDOW, 0)
|
||||
{
|
||||
@ -366,6 +367,14 @@ ChartWindow::ChartWindow(BRect frame, const char *name)
|
||||
BStringView *string;
|
||||
BRadioButton *radio;
|
||||
|
||||
// we're not font-sensitive, so we make sure we don't look too ugly
|
||||
BFont font;
|
||||
if (font.Size() > MAX_FONT_SIZE)
|
||||
font.SetSize(MAX_FONT_SIZE);
|
||||
BFont boldFont(be_bold_font);
|
||||
if (boldFont.Size() > MAX_FONT_SIZE)
|
||||
boldFont.SetSize(MAX_FONT_SIZE);
|
||||
|
||||
/* Check to see if we need the work-around for the case where
|
||||
DirectConnected is called back with B_BUFFER_RESET not set
|
||||
properly. This happens only with version 1.3.0 of the
|
||||
@ -377,7 +386,6 @@ ChartWindow::ChartWindow(BRect frame, const char *name)
|
||||
&& (vi.major == 1) && (vi.middle == 3) && (vi.minor == 0))
|
||||
need_r3_buffer_reset_work_around = true;
|
||||
|
||||
|
||||
/* offset the content area frame in window relative coordinate */
|
||||
frame.OffsetTo(0.0, 0.0);
|
||||
|
||||
@ -471,6 +479,7 @@ ChartWindow::ChartWindow(BRect frame, const char *name)
|
||||
fDirectConnected = false;
|
||||
|
||||
/* build the UI content of the window */
|
||||
|
||||
/* top line background */
|
||||
r.Set(0.0, 0.0, frame.right, TOP_LEFT_LIMIT - 1);
|
||||
fTopView = new BView(r, "top view", B_FOLLOW_LEFT_RIGHT, B_WILL_DRAW);
|
||||
@ -508,8 +517,11 @@ ChartWindow::ChartWindow(BRect frame, const char *name)
|
||||
|
||||
r.Set(h, v, h+ANIM_LABEL+ANIM_POPUP-1, v + (TOP_LEFT_LIMIT - 1 - 2*V_BORDER));
|
||||
popup = new BMenuField(r, "", "Animation:", menu);
|
||||
popup->SetFont(&font);
|
||||
popup->MenuBar()->SetFont(&font);
|
||||
popup->Menu()->SetFont(&font);
|
||||
popup->ResizeToPreferred();
|
||||
popup->SetDivider(popup->StringWidth(popup->Label()));
|
||||
popup->SetDivider(popup->StringWidth(popup->Label()) + 4.0f);
|
||||
fTopView->AddChild(popup);
|
||||
|
||||
h += ANIM_LABEL+ANIM_POPUP+H_BORDER;
|
||||
@ -533,8 +545,11 @@ ChartWindow::ChartWindow(BRect frame, const char *name)
|
||||
|
||||
r.Set(h, v, h+DISP_LABEL+DISP_POPUP-1, v + (TOP_LEFT_LIMIT - 1 - 2*V_BORDER));
|
||||
popup = new BMenuField(r, "", "Display:", menu);
|
||||
popup->SetFont(&font);
|
||||
popup->MenuBar()->SetFont(&font);
|
||||
popup->Menu()->SetFont(&font);
|
||||
popup->ResizeToPreferred();
|
||||
popup->SetDivider(popup->StringWidth(popup->Label()));
|
||||
popup->SetDivider(popup->StringWidth(popup->Label()) + 4.0f);
|
||||
fTopView->AddChild(popup);
|
||||
|
||||
h += DISP_LABEL+DISP_POPUP+H_BORDER;
|
||||
@ -570,7 +585,6 @@ ChartWindow::ChartWindow(BRect frame, const char *name)
|
||||
color_button->ResizeToPreferred();
|
||||
fTopView->AddChild(color_button);
|
||||
|
||||
|
||||
h += BUTTON_WIDTH+2*H_BORDER;
|
||||
|
||||
/* star density button */
|
||||
@ -599,14 +613,17 @@ ChartWindow::ChartWindow(BRect frame, const char *name)
|
||||
|
||||
r.Set(h, v, h+SPACE_LABEL+SPACE_POPUP-1, v + (TOP_LEFT_LIMIT - 1 - 2*V_BORDER));
|
||||
popup = new BMenuField(r, "", "Space:", menu);
|
||||
popup->SetFont(&font);
|
||||
popup->MenuBar()->SetFont(&font);
|
||||
popup->Menu()->SetFont(&font);
|
||||
popup->ResizeToPreferred();
|
||||
popup->SetDivider(SPACE_LABEL);
|
||||
popup->SetDivider(popup->StringWidth(popup->Label()) + 4.0f);
|
||||
fTopView->AddChild(popup);
|
||||
|
||||
h += SPACE_LABEL+SPACE_POPUP+2*H_BORDER;
|
||||
|
||||
/* left column gray background */
|
||||
r.Set(0.0, TOP_LEFT_LIMIT, LEFT_WIDTH-1, frame.bottom-1);
|
||||
r.Set(0.0, TOP_LEFT_LIMIT, LEFT_WIDTH-1, frame.bottom);
|
||||
fLeftView = new BView(r, "top view", B_FOLLOW_LEFT | B_FOLLOW_TOP_BOTTOM, B_WILL_DRAW);
|
||||
fLeftView->SetViewColor(background_color);
|
||||
AddChild(fLeftView);
|
||||
@ -617,8 +634,9 @@ ChartWindow::ChartWindow(BRect frame, const char *name)
|
||||
v = v2;
|
||||
|
||||
/* status box */
|
||||
r.Set(h, v, h+LEFT_WIDTH-2*LEFT_OFFSET-1, v+STATUS_BOX-1);
|
||||
r.Set(h, v, h+LEFT_WIDTH-2*LEFT_OFFSET-2, v+STATUS_BOX-1);
|
||||
fStatusBox = new BBox(r);
|
||||
fStatusBox->SetFont(&boldFont);
|
||||
fStatusBox->SetLabel("Status");
|
||||
fLeftView->AddChild(fStatusBox);
|
||||
float boxWidth, boxHeight;
|
||||
@ -631,8 +649,8 @@ ChartWindow::ChartWindow(BRect frame, const char *name)
|
||||
/* frames per second title string */
|
||||
r.Set(h, v, h+LEFT_WIDTH-2*LEFT_OFFSET-2*BOX_H_OFFSET-1, v+STATUS_LABEL-1);
|
||||
string = new BStringView(r, "", "Frames/s");
|
||||
string->SetFont(&font);
|
||||
string->SetAlignment(B_ALIGN_CENTER);
|
||||
string->ResizeToPreferred();
|
||||
fStatusBox->AddChild(string);
|
||||
|
||||
v += STATUS_LABEL+STATUS_OFFSET;
|
||||
@ -644,7 +662,6 @@ ChartWindow::ChartWindow(BRect frame, const char *name)
|
||||
frames->SetFont(be_bold_font);
|
||||
frames->SetFontSize(24.0);
|
||||
frames->SetViewColor(B_TRANSPARENT_32_BIT);
|
||||
frames->ResizeToPreferred();
|
||||
fStatusBox->AddChild(frames);
|
||||
|
||||
v += STATUS_EDIT+STATUS_OFFSET;
|
||||
@ -653,7 +670,7 @@ ChartWindow::ChartWindow(BRect frame, const char *name)
|
||||
r.Set(h, v, h+LEFT_WIDTH-2*LEFT_OFFSET-2*BOX_H_OFFSET-1, v+STATUS_LABEL-1);
|
||||
string = new BStringView(r, "", "CPU load");
|
||||
string->SetAlignment(B_ALIGN_CENTER);
|
||||
string->ResizeToPreferred();
|
||||
string->SetFont(&font);
|
||||
fStatusBox->AddChild(string);
|
||||
|
||||
v += STATUS_LABEL+STATUS_OFFSET;
|
||||
@ -665,7 +682,6 @@ ChartWindow::ChartWindow(BRect frame, const char *name)
|
||||
cpu_load->SetFont(be_bold_font);
|
||||
cpu_load->SetFontSize(24.0);
|
||||
cpu_load->SetViewColor(B_TRANSPARENT_32_BIT);
|
||||
cpu_load->ResizeToPreferred();
|
||||
fStatusBox->AddChild(cpu_load);
|
||||
|
||||
v2 += STATUS_BOX+LEFT_OFFSET*2;
|
||||
@ -676,6 +692,7 @@ ChartWindow::ChartWindow(BRect frame, const char *name)
|
||||
r.Set(h, v, h+LEFT_WIDTH-2*LEFT_OFFSET-1, v+FULL_SCREEN-1);
|
||||
full_screen = new BCheckBox(r, "", "Full Screen", new BMessage(FULL_SCREEN_MSG));
|
||||
full_screen->SetTarget(this);
|
||||
full_screen->SetFont(&font);
|
||||
full_screen->ResizeToPreferred();
|
||||
|
||||
float width, height;
|
||||
@ -704,17 +721,19 @@ ChartWindow::ChartWindow(BRect frame, const char *name)
|
||||
r.Set(h, v, h+LEFT_WIDTH-2*LEFT_OFFSET-1, v+SECOND_THREAD-1);
|
||||
check_box = new BCheckBox(r, "", "2 Threads", new BMessage(SECOND_THREAD_MSG));
|
||||
check_box->SetTarget(this);
|
||||
check_box->SetFont(&font);
|
||||
check_box->ResizeToPreferred();
|
||||
fLeftView->AddChild(check_box);
|
||||
|
||||
v2 += SECOND_THREAD+LEFT_OFFSET*2;
|
||||
v2 += SECOND_THREAD+LEFT_OFFSET*2 + 2;
|
||||
h = h2;
|
||||
v = v2;
|
||||
|
||||
/* Star color selection box */
|
||||
r.Set(h, v, h+LEFT_WIDTH-2*LEFT_OFFSET-1, v+COLORS_BOX-1);
|
||||
r.Set(h, v, h+LEFT_WIDTH-2*LEFT_OFFSET-2, v+COLORS_BOX-1);
|
||||
fColorsBox = new BBox(r);
|
||||
fColorsBox->SetLabel("Colors");
|
||||
fColorsBox->SetFont(&boldFont);
|
||||
fLeftView->AddChild(fColorsBox);
|
||||
|
||||
h = BOX_H_OFFSET;
|
||||
@ -723,6 +742,7 @@ ChartWindow::ChartWindow(BRect frame, const char *name)
|
||||
/* star color red check box */
|
||||
r.Set(h, v, h+LEFT_WIDTH-2*LEFT_OFFSET-2*BOX_H_OFFSET-1, v+COLORS_LABEL-1);
|
||||
check_box = new BCheckBox(r, "", "Red", new BMessage(COLORS_RED_MSG));
|
||||
check_box->SetFont(&font);
|
||||
check_box->ResizeToPreferred();
|
||||
fColorsBox->AddChild(check_box);
|
||||
|
||||
@ -732,6 +752,7 @@ ChartWindow::ChartWindow(BRect frame, const char *name)
|
||||
r.Set(h, v, h+LEFT_WIDTH-2*LEFT_OFFSET-2*BOX_H_OFFSET-1, v+COLORS_LABEL-1);
|
||||
check_box = new BCheckBox(r, "", "Green", new BMessage(COLORS_GREEN_MSG));
|
||||
check_box->SetValue(1);
|
||||
check_box->SetFont(&font);
|
||||
check_box->ResizeToPreferred();
|
||||
fColorsBox->AddChild(check_box);
|
||||
|
||||
@ -741,6 +762,7 @@ ChartWindow::ChartWindow(BRect frame, const char *name)
|
||||
r.Set(h, v, h+LEFT_WIDTH-2*LEFT_OFFSET-2*BOX_H_OFFSET-1, v+COLORS_LABEL-1);
|
||||
check_box = new BCheckBox(r, "", "Blue", new BMessage(COLORS_BLUE_MSG));
|
||||
check_box->SetValue(1);
|
||||
check_box->SetFont(&font);
|
||||
check_box->ResizeToPreferred();
|
||||
fColorsBox->AddChild(check_box);
|
||||
|
||||
@ -750,6 +772,7 @@ ChartWindow::ChartWindow(BRect frame, const char *name)
|
||||
r.Set(h, v, h+LEFT_WIDTH-2*LEFT_OFFSET-2*BOX_H_OFFSET-1, v+COLORS_LABEL-1);
|
||||
check_box = new BCheckBox(r, "", "Yellow", new BMessage(COLORS_YELLOW_MSG));
|
||||
check_box->SetValue(1);
|
||||
check_box->SetFont(&font);
|
||||
check_box->ResizeToPreferred();
|
||||
fColorsBox->AddChild(check_box);
|
||||
|
||||
@ -758,6 +781,7 @@ ChartWindow::ChartWindow(BRect frame, const char *name)
|
||||
/* star color orange check box */
|
||||
r.Set(h, v, h+LEFT_WIDTH-2*LEFT_OFFSET-2*BOX_H_OFFSET-1, v+COLORS_LABEL-1);
|
||||
check_box = new BCheckBox(r, "", "Orange", new BMessage(COLORS_ORANGE_MSG));
|
||||
check_box->SetFont(&font);
|
||||
check_box->ResizeToPreferred();
|
||||
fColorsBox->AddChild(check_box);
|
||||
|
||||
@ -766,6 +790,7 @@ ChartWindow::ChartWindow(BRect frame, const char *name)
|
||||
/* star color pink check box */
|
||||
r.Set(h, v, h+LEFT_WIDTH-2*LEFT_OFFSET-2*BOX_H_OFFSET-1, v+COLORS_LABEL-1);
|
||||
check_box = new BCheckBox(r, "", "Pink", new BMessage(COLORS_PINK_MSG));
|
||||
check_box->SetFont(&font);
|
||||
check_box->ResizeToPreferred();
|
||||
fColorsBox->AddChild(check_box);
|
||||
|
||||
@ -774,6 +799,7 @@ ChartWindow::ChartWindow(BRect frame, const char *name)
|
||||
/* star color white check box */
|
||||
r.Set(h, v, h+LEFT_WIDTH-2*LEFT_OFFSET-2*BOX_H_OFFSET-1, v+COLORS_LABEL-1);
|
||||
check_box = new BCheckBox(r, "", "White", new BMessage(COLORS_WHITE_MSG));
|
||||
check_box->SetFont(&font);
|
||||
check_box->ResizeToPreferred();
|
||||
fColorsBox->AddChild(check_box);
|
||||
|
||||
@ -782,8 +808,9 @@ ChartWindow::ChartWindow(BRect frame, const char *name)
|
||||
v = v2;
|
||||
|
||||
/* Special type selection box */
|
||||
r.Set(h, v, h+LEFT_WIDTH-2*LEFT_OFFSET-1, v+SPECIAL_BOX-1);
|
||||
r.Set(h, v, h+LEFT_WIDTH-2*LEFT_OFFSET-2, v+SPECIAL_BOX-1);
|
||||
fSpecialBox = new BBox(r);
|
||||
fSpecialBox->SetFont(&boldFont);
|
||||
fSpecialBox->SetLabel("Special");
|
||||
fLeftView->AddChild(fSpecialBox);
|
||||
|
||||
@ -794,6 +821,7 @@ ChartWindow::ChartWindow(BRect frame, const char *name)
|
||||
r.Set(h, v, h+LEFT_WIDTH-2*LEFT_OFFSET-2*BOX_H_OFFSET-1, v+COLORS_LABEL-1);
|
||||
radio = new BRadioButton(r, "", "None", new BMessage(SPECIAL_NONE_MSG));
|
||||
radio->SetValue(1);
|
||||
radio->SetFont(&font);
|
||||
radio->ResizeToPreferred();
|
||||
fSpecialBox->AddChild(radio);
|
||||
|
||||
@ -802,6 +830,7 @@ ChartWindow::ChartWindow(BRect frame, const char *name)
|
||||
/* comet special animation radio button */
|
||||
r.Set(h, v, h+LEFT_WIDTH-2*LEFT_OFFSET-2*BOX_H_OFFSET-1, v+COLORS_LABEL-1);
|
||||
radio = new BRadioButton(r, "", "Comet", new BMessage(SPECIAL_COMET_MSG));
|
||||
radio->SetFont(&font);
|
||||
radio->ResizeToPreferred();
|
||||
fSpecialBox->AddChild(radio);
|
||||
|
||||
@ -810,6 +839,7 @@ ChartWindow::ChartWindow(BRect frame, const char *name)
|
||||
/* novas special animation radio button */
|
||||
r.Set(h, v, h+LEFT_WIDTH-2*LEFT_OFFSET-2*BOX_H_OFFSET-1, v+COLORS_LABEL-1);
|
||||
radio = new BRadioButton(r, "", "Novas", new BMessage(SPECIAL_NOVAS_MSG));
|
||||
radio->SetFont(&font);
|
||||
radio->ResizeToPreferred();
|
||||
fSpecialBox->AddChild(radio);
|
||||
|
||||
@ -819,10 +849,12 @@ ChartWindow::ChartWindow(BRect frame, const char *name)
|
||||
r.Set(h, v, h+LEFT_WIDTH-2*LEFT_OFFSET-2*BOX_H_OFFSET-1, v+COLORS_LABEL-1);
|
||||
radio = new BRadioButton(r, "", "Battle", new BMessage(SPECIAL_BATTLE_MSG));
|
||||
radio->SetEnabled(false);
|
||||
radio->SetFont(&font);
|
||||
radio->ResizeToPreferred();
|
||||
fSpecialBox->AddChild(radio);
|
||||
|
||||
fLeftView->ResizeTo(max_c(boxWidth + 2, fLeftView->Bounds().Width()), fLeftView->Bounds().Height());
|
||||
// Note: direct window mode uses LEFT_WIDTH
|
||||
//fLeftView->ResizeTo(max_c(boxWidth + 2, fLeftView->Bounds().Width()), fLeftView->Bounds().Height());
|
||||
|
||||
/* animation area */
|
||||
r.Set(fLeftView->Frame().right, TOP_LEFT_LIMIT, frame.right, frame.bottom);
|
||||
@ -848,6 +880,7 @@ ChartWindow::ChartWindow(BRect frame, const char *name)
|
||||
resume_thread(fAnimationThread);
|
||||
}
|
||||
|
||||
|
||||
ChartWindow::~ChartWindow()
|
||||
{
|
||||
int32 result;
|
||||
@ -874,21 +907,19 @@ ChartWindow::~ChartWindow()
|
||||
}
|
||||
|
||||
|
||||
// #pragma mark Standard window members
|
||||
|
||||
|
||||
/*****************************************************
|
||||
** **
|
||||
** Standard window members **
|
||||
** **
|
||||
*****************************************************/
|
||||
|
||||
bool ChartWindow::QuitRequested()
|
||||
bool
|
||||
ChartWindow::QuitRequested()
|
||||
{
|
||||
be_app->PostMessage(B_QUIT_REQUESTED);
|
||||
return(TRUE);
|
||||
}
|
||||
|
||||
void ChartWindow::MessageReceived(BMessage *message)
|
||||
|
||||
void
|
||||
ChartWindow::MessageReceived(BMessage *message)
|
||||
{
|
||||
int32 index, color;
|
||||
BHandler *handler;
|
||||
@ -1005,7 +1036,9 @@ void ChartWindow::MessageReceived(BMessage *message)
|
||||
}
|
||||
}
|
||||
|
||||
void ChartWindow::ScreenChanged(BRect screen_size, color_space depth)
|
||||
|
||||
void
|
||||
ChartWindow::ScreenChanged(BRect screen_size, color_space depth)
|
||||
{
|
||||
BScreen my_screen(this);
|
||||
|
||||
@ -1016,7 +1049,9 @@ void ChartWindow::ScreenChanged(BRect screen_size, color_space depth)
|
||||
next_set.depth = my_screen.ColorSpace();
|
||||
}
|
||||
|
||||
void ChartWindow::FrameResized(float new_width, float new_height)
|
||||
|
||||
void
|
||||
ChartWindow::FrameResized(float new_width, float new_height)
|
||||
{
|
||||
/* this is the same principle than the one described for
|
||||
MessageReceived, to inform the engine that the window
|
||||
@ -1027,17 +1062,13 @@ void ChartWindow::FrameResized(float new_width, float new_height)
|
||||
}
|
||||
|
||||
|
||||
// #pragma mark User Interface related stuff...
|
||||
|
||||
|
||||
/*****************************************************
|
||||
** **
|
||||
** User Interface related stuff... **
|
||||
** **
|
||||
*****************************************************/
|
||||
|
||||
/* loop through the window list of the application, looking for
|
||||
a window with a specified name. */
|
||||
BWindow *ChartWindow::GetAppWindow(char *name)
|
||||
BWindow *
|
||||
ChartWindow::GetAppWindow(char *name)
|
||||
{
|
||||
int32 index;
|
||||
BWindow *window;
|
||||
@ -1060,7 +1091,8 @@ BWindow *ChartWindow::GetAppWindow(char *name)
|
||||
/* this function return a picture (in active or inactive state) of
|
||||
a standard BButton with some specific content draw in the middle.
|
||||
button_type indicate what special content should be used. */
|
||||
BPicture *ChartWindow::ButtonPicture(bool active, int32 button_type)
|
||||
BPicture *
|
||||
ChartWindow::ButtonPicture(bool active, int32 button_type)
|
||||
{
|
||||
char word[6];
|
||||
int32 value;
|
||||
@ -1114,14 +1146,13 @@ BPicture *ChartWindow::ButtonPicture(bool active, int32 button_type)
|
||||
BColorControl, ChartColorControl, that will return live feedback
|
||||
as the same time the user will change the color setting of the
|
||||
background. */
|
||||
void ChartWindow::OpenColorPalette(BPoint here)
|
||||
void
|
||||
ChartWindow::OpenColorPalette(BPoint here)
|
||||
{
|
||||
BRect frame;
|
||||
BPoint point;
|
||||
BWindow *window;
|
||||
BColorControl *color_ctrl;
|
||||
|
||||
window = GetAppWindow("Space color");
|
||||
BWindow *window = GetAppWindow("Space color");
|
||||
if (window == NULL) {
|
||||
frame.Set(here.x, here.y, here.x + 199.0, here.y + 99.0);
|
||||
window = new BWindow(frame, "Space color",
|
||||
@ -1129,14 +1160,14 @@ void ChartWindow::OpenColorPalette(BPoint here)
|
||||
B_FLOATING_APP_WINDOW_FEEL,
|
||||
B_NOT_ZOOMABLE | B_WILL_ACCEPT_FIRST_CLICK | B_NOT_RESIZABLE);
|
||||
point.Set(0, 0);
|
||||
color_ctrl = new ChartColorControl(point, new BMessage(COLOR_PALETTE_MSG));
|
||||
window->AddChild(color_ctrl);
|
||||
color_ctrl->SetViewColor(background_color);
|
||||
color_ctrl->SetTarget(NULL, this);
|
||||
color_ctrl->SetValue(fCurrentSettings.back_color);
|
||||
window->ResizeTo(color_ctrl->Bounds().Width(), color_ctrl->Bounds().Height());
|
||||
window->SetSizeLimits(frame.Width(), frame.Width(), frame.Height(), frame.Height());
|
||||
window->SetZoomLimits(frame.Width(), frame.Height());
|
||||
BColorControl *colorControl = new ChartColorControl(point,
|
||||
new BMessage(COLOR_PALETTE_MSG));
|
||||
colorControl->SetViewColor(background_color);
|
||||
colorControl->SetTarget(NULL, this);
|
||||
colorControl->SetValue(fCurrentSettings.back_color);
|
||||
colorControl->ResizeToPreferred();
|
||||
window->ResizeTo(colorControl->Bounds().Width(), colorControl->Bounds().Height());
|
||||
window->AddChild(colorControl);
|
||||
window->Show();
|
||||
}
|
||||
window->Activate();
|
||||
@ -1145,7 +1176,8 @@ void ChartWindow::OpenColorPalette(BPoint here)
|
||||
/* Create a floating window including a BSlider, that will return
|
||||
live feedback when the user will change the star density of the
|
||||
starfield */
|
||||
void ChartWindow::OpenStarDensity(BPoint here)
|
||||
void
|
||||
ChartWindow::OpenStarDensity(BPoint here)
|
||||
{
|
||||
BRect frame;
|
||||
BSlider *slider;
|
||||
@ -1158,9 +1190,6 @@ void ChartWindow::OpenStarDensity(BPoint here)
|
||||
B_FLOATING_WINDOW_LOOK,
|
||||
B_FLOATING_APP_WINDOW_FEEL,
|
||||
B_NOT_RESIZABLE | B_NOT_ZOOMABLE | B_WILL_ACCEPT_FIRST_CLICK);
|
||||
window->SetSizeLimits(frame.Width(), frame.Width(),
|
||||
frame.Height(), frame.Height());
|
||||
window->SetZoomLimits(frame.Width(), frame.Height());
|
||||
frame.OffsetTo(0.0, 0.0);
|
||||
slider = new BSlider(frame, "", NULL, new BMessage(STAR_DENSITY_MSG),
|
||||
STAR_DENSITY_MIN, STAR_DENSITY_MAX);
|
||||
@ -1169,6 +1198,8 @@ void ChartWindow::OpenStarDensity(BPoint here)
|
||||
slider->SetValue(fCurrentSettings.star_density);
|
||||
slider->SetModificationMessage(new BMessage(STAR_DENSITY_MSG));
|
||||
slider->SetLimitLabels(" 5% (low)", "(high) 100% ");
|
||||
slider->ResizeToPreferred();
|
||||
window->ResizeTo(slider->Bounds().Width(), slider->Bounds().Height());
|
||||
window->AddChild(slider);
|
||||
window->Show();
|
||||
}
|
||||
@ -1178,7 +1209,8 @@ void ChartWindow::OpenStarDensity(BPoint here)
|
||||
/* Create a floating window including a BSlider, that will return
|
||||
live feedback when the user will change the target refresh rate
|
||||
of the animation */
|
||||
void ChartWindow::OpenRefresh(BPoint here)
|
||||
void
|
||||
ChartWindow::OpenRefresh(BPoint here)
|
||||
{
|
||||
BRect frame;
|
||||
BSlider *slider;
|
||||
@ -1191,9 +1223,6 @@ void ChartWindow::OpenRefresh(BPoint here)
|
||||
B_FLOATING_WINDOW_LOOK,
|
||||
B_FLOATING_APP_WINDOW_FEEL,
|
||||
B_NOT_RESIZABLE | B_NOT_ZOOMABLE | B_WILL_ACCEPT_FIRST_CLICK);
|
||||
window->SetSizeLimits(frame.Width(), frame.Width(),
|
||||
frame.Height(), frame.Height());
|
||||
window->SetZoomLimits(frame.Width(), frame.Height());
|
||||
frame.OffsetTo(0.0, 0.0);
|
||||
slider = new BSlider(frame, "", NULL, new BMessage(REFRESH_RATE_MSG), 0.0, 1000.0);
|
||||
slider->SetViewColor(background_color);
|
||||
@ -1201,6 +1230,8 @@ void ChartWindow::OpenRefresh(BPoint here)
|
||||
slider->SetValue(1000.0*log(fCurrentSettings.refresh_rate/REFRESH_RATE_MIN)/log(REFRESH_RATE_MAX/REFRESH_RATE_MIN));
|
||||
slider->SetModificationMessage(new BMessage(REFRESH_RATE_MSG));
|
||||
slider->SetLimitLabels(" 0.6 f/s (logarythmic scale)", "600.0 f/s");
|
||||
slider->ResizeToPreferred();
|
||||
window->ResizeTo(slider->Bounds().Width(), slider->Bounds().Height());
|
||||
window->AddChild(slider);
|
||||
window->Show();
|
||||
}
|
||||
@ -1208,7 +1239,8 @@ void ChartWindow::OpenRefresh(BPoint here)
|
||||
}
|
||||
|
||||
/* This update the state of the frames per second vue-meter in a lazy way. */
|
||||
void ChartWindow::DrawInstantLoad(float frame_per_second)
|
||||
void
|
||||
ChartWindow::DrawInstantLoad(float frame_per_second)
|
||||
{
|
||||
int32 level, i;
|
||||
bigtime_t timeout;
|
||||
@ -1257,7 +1289,9 @@ void ChartWindow::DrawInstantLoad(float frame_per_second)
|
||||
Unlock();
|
||||
}
|
||||
|
||||
void ChartWindow::PrintStatNumbers(float fps)
|
||||
|
||||
void
|
||||
ChartWindow::PrintStatNumbers(float fps)
|
||||
{
|
||||
char text_frames[6];
|
||||
char text_cpu_load[6];
|
||||
@ -1299,15 +1333,11 @@ void ChartWindow::PrintStatNumbers(float fps)
|
||||
}
|
||||
|
||||
|
||||
// #pragma mark Engine setting related functions.
|
||||
|
||||
|
||||
/*****************************************************
|
||||
** **
|
||||
** Engine setting related functions. **
|
||||
** **
|
||||
*****************************************************/
|
||||
|
||||
void ChartWindow::InitGeometry()
|
||||
void
|
||||
ChartWindow::InitGeometry()
|
||||
{
|
||||
float dz;
|
||||
|
||||
@ -1339,7 +1369,9 @@ void ChartWindow::InitGeometry()
|
||||
because the structure of the animation engine loop guarantees
|
||||
that DirectConnected can not stay blocked at the same time that
|
||||
this method is executed. */
|
||||
void ChartWindow::ChangeSetting(setting new_set) {
|
||||
void
|
||||
ChartWindow::ChangeSetting(setting new_set)
|
||||
{
|
||||
//star *s;
|
||||
int32 i, color_count, old_step;
|
||||
int32 color_index[7];
|
||||
@ -1538,7 +1570,8 @@ void ChartWindow::ChangeSetting(setting new_set) {
|
||||
}
|
||||
|
||||
/* Initialise the starfield in the different modes */
|
||||
void ChartWindow::InitStars(int32 space_model)
|
||||
void
|
||||
ChartWindow::InitStars(int32 space_model)
|
||||
{
|
||||
star *s;
|
||||
int32 step;
|
||||
@ -1724,7 +1757,8 @@ void ChartWindow::InitStars(int32 space_model)
|
||||
}
|
||||
|
||||
/* Fill a list of star with random position in the [0-1]x[0-1]x[0-1] cube */
|
||||
void ChartWindow::FillStarList(star *list, int32 count)
|
||||
void
|
||||
ChartWindow::FillStarList(star *list, int32 count)
|
||||
{
|
||||
int32 i;
|
||||
|
||||
@ -1743,7 +1777,8 @@ void ChartWindow::FillStarList(star *list, int32 count)
|
||||
}
|
||||
|
||||
/* initialise anything needed to enable a specific special animation */
|
||||
void ChartWindow::InitSpecials(int32 code)
|
||||
void
|
||||
ChartWindow::InitSpecials(int32 code)
|
||||
{
|
||||
int i, j;
|
||||
float alpha, ksin, kcos, coeff;
|
||||
@ -1834,7 +1869,8 @@ void ChartWindow::InitSpecials(int32 code)
|
||||
|
||||
/* select a color for each star (and special animation point) by
|
||||
looping through the color index list. */
|
||||
void ChartWindow::SetStarColors(int32 *color_list, int32 color_count)
|
||||
void
|
||||
ChartWindow::SetStarColors(int32 *color_list, int32 color_count)
|
||||
{
|
||||
int32 i, index;
|
||||
|
||||
@ -1853,7 +1889,9 @@ void ChartWindow::SetStarColors(int32 *color_list, int32 color_count)
|
||||
}
|
||||
}
|
||||
|
||||
void ChartWindow::SetGeometry(int32 dh, int32 dv)
|
||||
|
||||
void
|
||||
ChartWindow::SetGeometry(int32 dh, int32 dv)
|
||||
{
|
||||
float zoom;
|
||||
|
||||
@ -1873,19 +1911,17 @@ void ChartWindow::SetGeometry(int32 dh, int32 dv)
|
||||
geo.offset_v = geo.offset_v * 2.0 - 1.0;
|
||||
}
|
||||
|
||||
void ChartWindow::SetColorSpace(buffer *buf, color_space depth)
|
||||
|
||||
void
|
||||
ChartWindow::SetColorSpace(buffer *buf, color_space depth)
|
||||
{
|
||||
bool swap_needed;
|
||||
int32 red_shift = 0,
|
||||
green_shift = 0,
|
||||
blue_shift = 0,
|
||||
alpha_shift = 0,
|
||||
step_doubling = 0;
|
||||
int32 red_shift = 0, green_shift = 0;
|
||||
int32 blue_shift = 0, alpha_shift = 0;
|
||||
int32 step_doubling = 0;
|
||||
|
||||
int32 red_divide_shift = 0,
|
||||
green_divide_shift = 0,
|
||||
blue_divide_shift = 0,
|
||||
alpha_divide_shift = 0;
|
||||
int32 red_divide_shift = 0, green_divide_shift = 0;
|
||||
int32 blue_divide_shift = 0, alpha_divide_shift = 0;
|
||||
int32 i;
|
||||
uint32 color;
|
||||
uint32 *col;
|
||||
@ -2018,18 +2054,23 @@ void ChartWindow::SetColorSpace(buffer *buf, color_space depth)
|
||||
/* do the endianess swap if needed */
|
||||
if (swap_needed) {
|
||||
col = buf->colors[0];
|
||||
for (i=0; i<7*8; i++)
|
||||
for (i = 0; i < 7*8; i++) {
|
||||
B_SWAP_INT32(col[i]);
|
||||
}
|
||||
B_SWAP_INT32(buf->back_color);
|
||||
}
|
||||
}
|
||||
|
||||
/* For each different offset used to access a pixel of the star matrix,
|
||||
|
||||
/*!
|
||||
For each different offset used to access a pixel of the star matrix,
|
||||
create a buffer pointer based on the main buffer pointer offset by
|
||||
the pixel matrix offset. That way, any pixel of the matrix can be
|
||||
address later by just picking the right pointer and indexing it by
|
||||
the global star offset */
|
||||
void ChartWindow::SetPatternBits(buffer *buf)
|
||||
the global star offset
|
||||
*/
|
||||
void
|
||||
ChartWindow::SetPatternBits(buffer *buf)
|
||||
{
|
||||
for (int32 i=0; i<32; i++) {
|
||||
buf->pattern_bits[i] = (void*)((char*)buf->bits +
|
||||
@ -2039,17 +2080,16 @@ void ChartWindow::SetPatternBits(buffer *buf)
|
||||
}
|
||||
|
||||
|
||||
// #pragma mark Engine processing related functions.
|
||||
|
||||
|
||||
/*****************************************************
|
||||
** **
|
||||
** Engine processing related functions. **
|
||||
** **
|
||||
*****************************************************/
|
||||
|
||||
/* That's the main thread controling the animation and synchronising
|
||||
the engine state with the changes coming from the UI. */
|
||||
long ChartWindow::Animation(void *data) {
|
||||
/*!
|
||||
That's the main thread controling the animation and synchronising
|
||||
the engine state with the changes coming from the UI.
|
||||
*/
|
||||
long
|
||||
ChartWindow::Animation(void *data)
|
||||
{
|
||||
int32 i, cur_4_frames_index, cur_last_fps, count_fps;
|
||||
float time_factor = 0, total_fps;
|
||||
float last_fps[4];
|
||||
@ -2162,7 +2202,9 @@ long ChartWindow::Animation(void *data) {
|
||||
slave of the Animation thread. It's directly synchronised with its
|
||||
master, and will only do some star animation processing whenever
|
||||
its master allows him to do so. */
|
||||
long ChartWindow::Animation2(void *data) {
|
||||
long
|
||||
ChartWindow::Animation2(void *data)
|
||||
{
|
||||
bigtime_t before, after;
|
||||
ChartWindow *w;
|
||||
|
||||
@ -2189,7 +2231,9 @@ long ChartWindow::Animation2(void *data) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
void ChartWindow::SetCubeOffset()
|
||||
|
||||
void
|
||||
ChartWindow::SetCubeOffset()
|
||||
{
|
||||
int32 i;
|
||||
TPoint min, max, dx, dy, dz, p1;
|
||||
@ -2283,7 +2327,8 @@ void ChartWindow::SetCubeOffset()
|
||||
/* move the camera around, as defined by the animation popup.
|
||||
This is adjusted by a time factor to compensate for change
|
||||
in the framerate. */
|
||||
void ChartWindow::CameraAnimation(float time_factor)
|
||||
void
|
||||
ChartWindow::CameraAnimation(float time_factor)
|
||||
{
|
||||
TPoint move;
|
||||
|
||||
@ -2428,7 +2473,9 @@ void ChartWindow::CameraAnimation(float time_factor)
|
||||
}
|
||||
}
|
||||
|
||||
void ChartWindow::SelectNewTarget()
|
||||
|
||||
void
|
||||
ChartWindow::SelectNewTarget()
|
||||
{
|
||||
float ratio, ratio_min;
|
||||
float dist, lateral, axial, ftmp;
|
||||
@ -2486,7 +2533,8 @@ void ChartWindow::SelectNewTarget()
|
||||
|
||||
/* Try to change the angular acceleration to aim in direction
|
||||
of the current target. */
|
||||
void ChartWindow::FollowTarget()
|
||||
void
|
||||
ChartWindow::FollowTarget()
|
||||
{
|
||||
float x0, y0, x, y, z, cphi, sphi;
|
||||
TPoint pt;
|
||||
@ -2548,7 +2596,8 @@ void ChartWindow::FollowTarget()
|
||||
/* Do whatever special processing is required to do special
|
||||
animation. This used a time_step (or time_factor) to
|
||||
compensate for change in the framerate of the animation. */
|
||||
void ChartWindow::AnimSpecials(float time_step)
|
||||
void
|
||||
ChartWindow::AnimSpecials(float time_step)
|
||||
{
|
||||
int i, j;
|
||||
star *s;
|
||||
@ -2632,9 +2681,12 @@ void ChartWindow::AnimSpecials(float time_step)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* Sync the embedded camera state with the window class camera
|
||||
state (before calling the embedded C-engine in ChartRender.c */
|
||||
void ChartWindow::SyncGeo() {
|
||||
void
|
||||
ChartWindow::SyncGeo()
|
||||
{
|
||||
geo.x = origin.x;
|
||||
geo.y = origin.y;
|
||||
geo.z = origin.z;
|
||||
@ -2644,7 +2696,9 @@ void ChartWindow::SyncGeo() {
|
||||
memcpy(geo.m, camera_invert.m, sizeof(float)*9);
|
||||
}
|
||||
|
||||
void ChartWindow::RefreshStars(buffer *buf, float time_step)
|
||||
|
||||
void
|
||||
ChartWindow::RefreshStars(buffer *buf, float time_step)
|
||||
{
|
||||
float ratio;
|
||||
int32 star_threshold, special_threshold;
|
||||
@ -2727,15 +2781,11 @@ void ChartWindow::RefreshStars(buffer *buf, float time_step)
|
||||
}
|
||||
|
||||
|
||||
// #pragma mark Offscreen bitmap configuration related functions.
|
||||
|
||||
|
||||
/*****************************************************
|
||||
** **
|
||||
** Offscreen bitmap configuration related functions.**
|
||||
** **
|
||||
*****************************************************/
|
||||
|
||||
void ChartWindow::CheckBitmap(color_space depth, int32 width, int32 height)
|
||||
void
|
||||
ChartWindow::CheckBitmap(color_space depth, int32 width, int32 height)
|
||||
{
|
||||
color_space cur_depth;
|
||||
|
||||
@ -2787,7 +2837,9 @@ void ChartWindow::CheckBitmap(color_space depth, int32 width, int32 height)
|
||||
Unlock();
|
||||
}
|
||||
|
||||
void ChartWindow::SetBitmapClipping(int32 width, int32 height)
|
||||
|
||||
void
|
||||
ChartWindow::SetBitmapClipping(int32 width, int32 height)
|
||||
{
|
||||
/* Set the bitmap buffer clipping to the required size of
|
||||
the buffer (even if the allocated buffer is larger) */
|
||||
@ -2802,7 +2854,9 @@ void ChartWindow::SetBitmapClipping(int32 width, int32 height)
|
||||
bitmap_buffer.clip_list[0].bottom = bitmap_buffer.clip_bounds.bottom;
|
||||
}
|
||||
|
||||
void ChartWindow::SetBitmapBackGround()
|
||||
|
||||
void
|
||||
ChartWindow::SetBitmapBackGround()
|
||||
{
|
||||
int32 i, count;
|
||||
uint32 *bits;
|
||||
@ -2818,15 +2872,11 @@ void ChartWindow::SetBitmapBackGround()
|
||||
}
|
||||
|
||||
|
||||
// #pragma mark DirectWindow related functions.
|
||||
|
||||
|
||||
/*****************************************************
|
||||
** **
|
||||
** DirectWindow related functions. **
|
||||
** **
|
||||
*****************************************************/
|
||||
|
||||
void ChartWindow::DirectConnected(direct_buffer_info *info)
|
||||
void
|
||||
ChartWindow::DirectConnected(direct_buffer_info *info)
|
||||
{
|
||||
/* block the animation thread. */
|
||||
acquire_sem(fDrawingLock);
|
||||
@ -2843,7 +2893,8 @@ void ChartWindow::DirectConnected(direct_buffer_info *info)
|
||||
in DirectConnected, it's a bad idea to do any heavy drawing (long)
|
||||
operation. But as we only update the stars (the background will be
|
||||
update a little later by the view system), it's not a big deal. */
|
||||
void ChartWindow::SwitchContext(direct_buffer_info *info)
|
||||
void
|
||||
ChartWindow::SwitchContext(direct_buffer_info *info)
|
||||
{
|
||||
//star *s;
|
||||
uint32 i, j;
|
||||
@ -2986,15 +3037,17 @@ void ChartWindow::SwitchContext(direct_buffer_info *info)
|
||||
}
|
||||
|
||||
|
||||
/*! copy a setting into another */
|
||||
void
|
||||
ChartWindow::setting::Set(setting *master)
|
||||
{
|
||||
memcpy(this, master, sizeof(setting));
|
||||
}
|
||||
|
||||
|
||||
/*****************************************************
|
||||
** **
|
||||
** Pseudo-random generator increment function. **
|
||||
** **
|
||||
*****************************************************/
|
||||
|
||||
void ChartWindow::CrcStep()
|
||||
/*! Pseudo-random generator increment function. */
|
||||
void
|
||||
ChartWindow::CrcStep()
|
||||
{
|
||||
crc_alea <<= 1;
|
||||
if (crc_alea < 0)
|
||||
|
@ -1,12 +1,18 @@
|
||||
SubDir HAIKU_TOP src tests kits game chart ;
|
||||
|
||||
SetSubDirSupportedPlatformsBeOSCompatible ;
|
||||
AddSubDirSupportedPlatforms libbe_test ;
|
||||
|
||||
Application Chart :
|
||||
Chart.cpp
|
||||
ChartRender.cpp
|
||||
ChartView.cpp
|
||||
ChartWindow.cpp
|
||||
: libbe.so libgame.so libroot.so
|
||||
: be game
|
||||
: Chart.rdef
|
||||
;
|
||||
|
||||
|
||||
if $(TARGET_PLATFORM) = libbe_test {
|
||||
HaikuInstall install-test-apps : $(HAIKU_APP_TEST_DIR) : Chart
|
||||
: tests!apps ;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user