Пример #1
0
//-------------------------------------------------------------------------------------------
//!
//-------------------------------------------------------------------------------------------
tPageBase::tPageBase( const Page::ePageId id, const QString& title, tIInstrumentProductFactory* pProductFactory, tInstrumentState* pAppState , QWidget* pParent )
: QWidget( pParent )
,m_Id( id )
,m_Title( title )
,m_pProductFactory( pProductFactory )
,m_pAppState( pAppState )
{
    Assert( m_pProductFactory );

    setAutoFillBackground( true );

    m_InstanceCount++;

    m_pMainLayout = new QGridLayout( this );
    m_pMainLayout->setContentsMargins( 0, 0, 0, 0 );
    m_pMainLayout->setSpacing( 0 );

    m_pTitleLabel = new QLabel( m_Title, this );
    m_pTitleLabel->hide();

    m_pMainLayout->addWidget( m_pTitleLabel, 0, 0, Qt::AlignCenter );

    setLayout( m_pMainLayout );

    CreateCommonActions();

    Connect( tInstrumentUiSettings::Instance(), SIGNAL( ColorChanged() ), this, SLOT( UpdateColors() ) );
    Connect( tSystemSettings::Instance(), SIGNAL( NightModeChanged(bool,bool) ), this, SLOT( UpdateColors() ) );
    Connect( tUiSettings::Instance(), SIGNAL( NightModeTextColorChanged( eNightModeTextColor ) ), this, SLOT( UpdateColors() ) );

    UpdateColors();
}
Пример #2
0
void CWidget::InitDraw()
{
    if (m_bSizeChanged)
    {
        m_bSizeChanged = false;
        MoveWindow(0, 0); // Move to a safe position first
        WindowResize(this, Width(), Height());
        MoveWindow(X(), Y());
        UpdateSize();
        TUI.QueueRefresh();
    }
    
    if (m_bColorsChanged)
    {
        if (m_bFocused)
            wbkgdset(m_pNCursWin, ' ' | TUI.GetColorPair(m_FColors.first, m_FColors.second) | A_BOLD);
        else
            wbkgdset(m_pNCursWin, ' ' | TUI.GetColorPair(m_DFColors.first, m_DFColors.second) | A_BOLD);
        
        m_bColorsChanged = false;
        
        UpdateColors();
    }
    
    WindowErase(this);

    if (HasBox())
        Border(this);
}
		ibool Launcher::Colors::OnCmdDefault(Param&)
		{
			background.color = DEF_BACKGROUND_COLOR;
			foreground.color = DEF_FOREGROUND_COLOR;
			UpdateColors();
			return true;
		}
Пример #4
0
void CGUIControl::SetInitialVisibility()
{
  if (m_visibleCondition)
  {
    m_visibleFromSkinCondition = m_visibleCondition->Get();
    m_visible = m_visibleFromSkinCondition ? VISIBLE : HIDDEN;
  //  CLog::Log(LOGDEBUG, "Set initial visibility for control %i: %s", m_controlID, m_visible == VISIBLE ? "visible" : "hidden");
  }
  else if (m_visible == DELAYED)
    m_visible = VISIBLE;
  // and handle animation conditions as well
  for (unsigned int i = 0; i < m_animations.size(); i++)
  {
    CAnimation &anim = m_animations[i];
    if (anim.GetType() == ANIM_TYPE_CONDITIONAL)
      anim.SetInitialCondition();
  }
  // and check for conditional enabling - note this overrides SetEnabled() from the code currently
  // this may need to be reviewed at a later date
  if (m_enableCondition)
    m_enabled = m_enableCondition->Get();
  m_allowHiddenFocus.Update();
  UpdateColors();

  MarkDirtyRegion();
}
		ibool Preferences::OnCmdMenuColorChange(Param& param)
		{
			if (param.Button().Clicked())
			{
				static COLORREF customColors[16] = {0};

				Object::Pod<CHOOSECOLOR> cc;

				MenuColorWindow& type = menuColorWindows[param.Button().GetId() == IDC_PREFERENCES_MENUCOLOR_FULLSCREEN_CHANGE];

				cc.lStructSize  = sizeof(cc);
				cc.hwndOwner    = dialog;
				cc.lpCustColors = customColors;
				cc.rgbResult    = type.color;
				cc.Flags        = CC_FULLOPEN|CC_RGBINIT;

				if (::ChooseColor( &cc ))
				{
					type.color = cc.rgbResult;
					UpdateColors();
				}
			}

			return true;
		}
Пример #6
0
void Button::SetAcionDownState(){
	if(is_toggle_button)
		state_clicked = !state_clicked;
	else
		state_clicked = true;

	UpdateColors();
}
		ibool Preferences::OnInitDialog(Param&)
		{
			for (uint i=0; i < 2; ++i)
			{
				MenuColorWindow& type = menuColorWindows[i];

				type.color = i ? settings.menuLookFullscreen.color : settings.menuLookDesktop.color;
				type.rect = dialog.Control(i ? IDC_PREFERENCES_MENUCOLOR_FULLSCREEN_CHANGE : IDC_PREFERENCES_MENUCOLOR_DESKTOP_CHANGE).GetWindow().Coordinates();
				type.rect.Position() -= Point(type.rect.Width()+8,0);
				type.rect.ClientTransform( dialog );
			}

			dialog.Control( IDC_PREFERENCES_MENUCOLOR_DESKTOP_CHANGE ).Enable( settings.menuLookDesktop.enabled );
			dialog.Control( IDC_PREFERENCES_MENUCOLOR_FULLSCREEN_CHANGE ).Enable( settings.menuLookFullscreen.enabled );

			dialog.CheckBox( IDC_PREFERENCES_MENUCOLOR_DESKTOP_DEFAULT ).Check( !settings.menuLookDesktop.enabled );
			dialog.CheckBox( IDC_PREFERENCES_MENUCOLOR_FULLSCREEN_DEFAULT ).Check( !settings.menuLookFullscreen.enabled );

			for (uint i=0; i < NUM_SETTINGS; ++i)
			{
				if (i != SAVE_SETTINGS)
					dialog.CheckBox( IDC_PREFERENCES_STARTUP_FULLSCREEN + i ).Check( settings[i] );
			}

			{
				Association association;

				for (uint i=0; i < Association::NUM_EXTENSIONS; ++i)
					dialog.CheckBox( IDC_PREFERENCES_ASSOCIATE_NES + i ).Check( association.Enabled(i) );
			}

			dialog.RadioButton( IDC_PREFERENCES_FAVORED_NES_NTSC ).Check( settings.favoredSystem == Nes::Machine::FAVORED_NES_NTSC );
			dialog.RadioButton( IDC_PREFERENCES_FAVORED_NES_PAL  ).Check( settings.favoredSystem == Nes::Machine::FAVORED_NES_PAL  );
			dialog.RadioButton( IDC_PREFERENCES_FAVORED_FAMICOM  ).Check( settings.favoredSystem == Nes::Machine::FAVORED_FAMICOM  );
			dialog.RadioButton( IDC_PREFERENCES_FAVORED_DENDY    ).Check( settings.favoredSystem == Nes::Machine::FAVORED_DENDY    );

			dialog.CheckBox( IDC_PREFERENCES_FAVORED_ALWAYS_ASK ).Check( settings.alwaysAskSystem );

			{
				Control::ComboBox priorities( dialog.ComboBox( IDC_PREFERENCES_PRIORITY ) );

				for (uint i=IDS_PRIORITY_NORMAL; i <= IDS_PRIORITY_HIGH; ++i)
					priorities.Add( Resource::String(i) );

				priorities[settings.priority].Select();
			}

			dialog.RadioButton( IDC_PREFERENCES_STYLE_NES ).Check( Application::Instance::GetIconStyle() == Application::Instance::ICONSTYLE_NES );
			dialog.RadioButton( IDC_PREFERENCES_STYLE_FAMICOM ).Check( Application::Instance::GetIconStyle() == Application::Instance::ICONSTYLE_FAMICOM );

			UpdateIconStyle();
			UpdateColors();

			return true;
		}
Пример #8
0
void CPathDialog::InitDialogBar()
{
	CW3ZMapEditApp *pTheApp = (CW3ZMapEditApp *)AfxGetApp();
	ASSERT_VALID(pTheApp);
	m_iPenSize = pTheApp->m_ToolPathEdit.GetToolSize();
	UpdateData(FALSE);

	m_btnNoWalk.SetTriState(TRUE);
	m_btnNoWalk.SetTextOnly(TRUE);
	m_btnNoWalk.SetWindowText(STR_PATH_NOWALK);
	m_btnNoWalk.SetState(EB_STATE0);
	m_btnNoWalk.SetColorState2(0x0000C000);

	m_btnNoBuild.SetTriState(TRUE);
	m_btnNoBuild.SetTextOnly(TRUE);
	m_btnNoBuild.SetState(EB_STATE0);
	m_btnNoBuild.SetColorState2(0x0000C000);

	m_btnNoFly.SetTriState(TRUE);
	m_btnNoFly.SetTextOnly(TRUE);
	m_btnNoFly.SetState(EB_STATE0);
	m_btnNoFly.SetColorState2(0x0000C000);

	m_btnBlight.SetTriState(TRUE);
	m_btnBlight.SetTextOnly(TRUE);
	m_btnBlight.SetState(EB_STATE0);
	m_btnBlight.SetColorState2(0x0000C000);

	m_btnNoWater.SetTriState(TRUE);
	m_btnNoWater.SetTextOnly(TRUE);
	m_btnNoWater.SetState(EB_STATE0);
	m_btnNoWater.SetColorState2(0x0000C000);

	m_btnUnknown.SetTriState(TRUE);
	m_btnUnknown.SetTextOnly(TRUE);
	m_btnUnknown.SetState(EB_STATE0);
	m_btnUnknown.SetColorState2(0x0000C000);

	m_btnUnkn01.SetTriState(TRUE);
	m_btnUnkn01.SetTextOnly(TRUE);
	m_btnUnkn01.SetState(EB_STATE0);
	m_btnUnkn01.SetColorState2(0x0000C000);

	m_btnUnkn02.SetTriState(TRUE);
	m_btnUnkn02.SetTextOnly(TRUE);
	m_btnUnkn02.SetState(EB_STATE0);
	m_btnUnkn02.SetColorState2(0x0000C000);

	UpdateColors();
	UpdateCurrentColor();
}
void DeskbarPulseView::MessageReceived(BMessage *message) {
	switch (message->what) {
		case PV_NORMAL_MODE:
			SetMode(true);
			Remove();
			break;
		case PV_MINI_MODE:
			SetMode(false);
			Remove();
			break;
		case PV_PREFERENCES:
			if (prefswindow != NULL) {
				prefswindow->Activate(true);
				break;
			}
			prefswindow = new PrefsWindow(prefs->prefs_window_rect,
				"Pulse settings", new BMessenger(this), prefs);
			prefswindow->Show();
			break;
		case PV_ABOUT: {
			PulseApp::ShowAbout(false);
			break;
		}
		case PV_QUIT:
			Remove();
			break;
		case PRV_DESKBAR_CHANGE_COLOR:
			UpdateColors(message);
			break;
		case PRV_DESKBAR_ICON_WIDTH: {
			int width = message->FindInt32("width");
			ResizeTo(width - 1, 15);
			Draw(Bounds());
			break;
		}
		case PV_REPLICANT_PULSE:
			Update();
			Draw(Bounds());
			break;
		case PRV_QUIT:
			prefswindow = NULL;
			break;
		case PV_CPU_MENU_ITEM:
			ChangeCPUState(message);
			break;
		default:
			BView::MessageReceived(message);
			break;
	}
}
Пример #10
0
  void LaserScanPlugin::SelectMaxColor()
  {
    QColorDialog dialog(max_color_, config_widget_);
    dialog.exec();

    if (dialog.result() == QDialog::Accepted)
    {
      max_color_ = dialog.selectedColor();
      ui_.selectMaxColor->setStyleSheet("background: " + max_color_.name() + ";");
      DrawIcon();
      UpdateColors();
      canvas_->update();
    }
  }
Пример #11
0
tTripDialog::tTripDialog( tIInstrumentProductFactory* pProductFactory, QWidget* pParent, int tripNumber )
: tDialog( tDialog::Full, pParent )
, m_TripNumber(tripNumber)
{
    Assert( pProductFactory );
    if ( pProductFactory )
    {
        QString title = tr( "Trip", "[title]" );
        title += QString(" %1").arg(tripNumber + 1);

        setWindowTitle( title );

        QGridLayout* pGridLayout = new QGridLayout();
        pGridLayout->setContentsMargins( 0, 0, 0, 0 );
        pGridLayout->setSpacing( 0 );

        int row = 0;
        int col = 0;

        m_pGauge1 = pProductFactory->GetDigitalGauge( tDataId(DATA_TYPE_TRIP_DISTANCE, m_TripNumber), this );
        m_pGauge1->SetBorders( false, false, true, true );
        pGridLayout->addWidget( m_pGauge1, row++, col );

        m_pGauge2 = pProductFactory->GetDigitalGauge( tDataId(DATA_TYPE_SPEED_TRIP_AVG, m_TripNumber), this );
        m_pGauge2->SetBorders( false, false, true, false );
        pGridLayout->addWidget( m_pGauge2, row++, col );

        row = 0;
        col++;

        m_pGauge3 = pProductFactory->GetDigitalGauge( tDataId(DATA_TYPE_TRIP_TIME, m_TripNumber), this );
        m_pGauge3->SetBorders( false, false, false, true );
        pGridLayout->addWidget( m_pGauge3, row++, col );

        m_pGauge4 = pProductFactory->GetDigitalGauge( tDataId(DATA_TYPE_SPEED_TRIP_MAX, m_TripNumber), this );
        m_pGauge4->SetBorders( false );
        pGridLayout->addWidget( m_pGauge4, row++, col );

        setLayout( pGridLayout );

        CreateActions();

        Connect( tSystemSettings::Instance(), SIGNAL( NightModeChanged(bool,bool) ), this, SLOT( UpdateColors() ) );
        Connect( tUiSettings::Instance(), SIGNAL( NightModeTextColorChanged( eNightModeTextColor ) ), this, SLOT( UpdateColors() ) );
        UpdateColors();
    }
}
Пример #12
0
void CGUIControl::UpdateVisibility(const CGUIListItem *item)
{
  if (m_visibleCondition)
  {
    bool bWasVisible = m_visibleFromSkinCondition;
    m_visibleFromSkinCondition = m_visibleCondition->Get(item);
    if (!bWasVisible && m_visibleFromSkinCondition)
    { // automatic change of visibility - queue the in effect
  //    CLog::Log(LOGDEBUG, "Visibility changed to visible for control id %i", m_controlID);
      QueueAnimation(ANIM_TYPE_VISIBLE);
    }
    else if (bWasVisible && !m_visibleFromSkinCondition)
    { // automatic change of visibility - do the out effect
  //    CLog::Log(LOGDEBUG, "Visibility changed to hidden for control id %i", m_controlID);
      QueueAnimation(ANIM_TYPE_HIDDEN);
    }
  }
  // check for conditional animations
  for (unsigned int i = 0; i < m_animations.size(); i++)
  {
    CAnimation &anim = m_animations[i];
    if (anim.GetType() == ANIM_TYPE_CONDITIONAL)
      anim.UpdateCondition(item);
  }
  // and check for conditional enabling - note this overrides SetEnabled() from the code currently
  // this may need to be reviewed at a later date
  bool enabled = m_enabled;
  if (m_enableCondition)
    m_enabled = m_enableCondition->Get(item);

  if (m_enabled != enabled)
    MarkDirtyRegion();

  m_allowHiddenFocus.Update(item);
  if (UpdateColors())
    MarkDirtyRegion();
  // and finally, update our control information (if not pushed)
  if (!m_pushedUpdates)
    UpdateInfo(item);
}
		ibool Preferences::OnCmdDefault(Param&)
		{
			dialog.CheckBox( IDC_PREFERENCES_BEGIN_EMULATION       ).Check( true  );
			dialog.CheckBox( IDC_PREFERENCES_RUN_IN_BACKGROUND     ).Check( false );
			dialog.CheckBox( IDC_PREFERENCES_STARTUP_FULLSCREEN    ).Check( false );
			dialog.CheckBox( IDC_PREFERENCES_DISABLE_ROM_WARNINGS  ).Check( false );
			dialog.CheckBox( IDC_PREFERENCES_CLOSE_POWER_OFF       ).Check( false );
			dialog.CheckBox( IDC_PREFERENCES_CONFIRM_EXIT          ).Check( true  );
			dialog.CheckBox( IDC_PREFERENCES_CONFIRM_RESET         ).Check( false );
			dialog.CheckBox( IDC_PREFERENCES_MULTIPLE_INSTANCES    ).Check( false );
			dialog.CheckBox( IDC_PREFERENCES_SAVE_LOGFILE          ).Check( true  );
			dialog.CheckBox( IDC_PREFERENCES_SAVE_LAUNCHER         ).Check( true  );
			dialog.CheckBox( IDC_PREFERENCES_SAVE_CHEATCODES       ).Check( true  );
			dialog.CheckBox( IDC_PREFERENCES_SAVE_NETPLAY_GAMELIST ).Check( true  );
			dialog.CheckBox( IDC_PREFERENCES_SAVE_WINDOWPOS        ).Check( false );
			dialog.CheckBox( IDC_PREFERENCES_SAVE_LAUNCHERSIZE     ).Check( false );

			dialog.ComboBox( IDC_PREFERENCES_PRIORITY )[ PRIORITY_NORMAL ].Select();

			dialog.RadioButton( IDC_PREFERENCES_FAVORED_NES_NTSC ).Check( true  );
			dialog.RadioButton( IDC_PREFERENCES_FAVORED_NES_PAL  ).Check( false );
			dialog.RadioButton( IDC_PREFERENCES_FAVORED_FAMICOM  ).Check( false );
			dialog.RadioButton( IDC_PREFERENCES_FAVORED_DENDY    ).Check( false );

			dialog.CheckBox( IDC_PREFERENCES_FAVORED_ALWAYS_ASK ).Check( false );

			dialog.CheckBox( IDC_PREFERENCES_MENUCOLOR_DESKTOP_DEFAULT ).Check( true );
			dialog.CheckBox( IDC_PREFERENCES_MENUCOLOR_FULLSCREEN_DEFAULT ).Check( true );

			dialog.Control( IDC_PREFERENCES_MENUCOLOR_DESKTOP_CHANGE ).Enable( false );
			dialog.Control( IDC_PREFERENCES_MENUCOLOR_FULLSCREEN_CHANGE ).Enable( false );

			menuColorWindows[0].color = DEFAULT_DESKTOP_MENU_COLOR;
			menuColorWindows[1].color = DEFAULT_FULLSCREEN_MENU_COLOR;

			UpdateColors();

			return true;
		}
Пример #14
0
LRESULT CALLBACK WndProc(HWND hWnd,UINT msg,WPARAM wParam,LPARAM lParam) {
	switch(msg) {
		case WM_SIZE:
			swidth=LOWORD(lParam); sheight=HIWORD(lParam);
			resize(LOWORD(lParam),HIWORD(lParam));
			releaseDIB(dibDC);
			initDIB(dibDC,LOWORD(lParam),HIWORD(lParam));
			InvalidateRect(hWnd,NULL,FALSE);
			break;
		case WM_KEYDOWN:
			keyDown(wParam);
			break;
		case WM_KEYUP:
			keyUp(wParam);
			break;
		case WM_DESTROY:
			PostQuitMessage(0);
			break;
		case WM_QUERYNEWPALETTE:
			if(!hPalette)
				break;
			SelectPalette(hdc,hPalette,FALSE);
			RealizePalette(hdc);
			InvalidateRect(hWnd,NULL,FALSE);
			break;
		case WM_PALETTECHANGED:
			if(!hPalette||(HWND)wParam==hWnd)
				break;
			SelectPalette(hdc,hPalette,FALSE);
			RealizePalette(hdc);
			UpdateColors(hdc);
			break;
		default:
			return DefWindowProc(hWnd,msg,wParam,lParam);
	}

	return 0;
}
Пример #15
0
LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
     static BITMAPINFO * pPackedDib ;
     static HPALETTE     hPalette ;
     static int          cxClient, cyClient ;
     static OPENFILENAME ofn ;
     static TCHAR        szFileName [MAX_PATH], szTitleName [MAX_PATH] ;
     static TCHAR        szFilter[] = TEXT ("Bitmap Files (*.BMP)\0*.bmp\0")
                                      TEXT ("All Files (*.*)\0*.*\0\0") ;
     HDC                 hdc ;
     PAINTSTRUCT         ps ;

     switch (message)
     {
     case WM_CREATE:
          ofn.lStructSize       = sizeof (OPENFILENAME) ;
          ofn.hwndOwner         = hwnd ;
          ofn.hInstance         = NULL ;
          ofn.lpstrFilter       = szFilter ;
          ofn.lpstrCustomFilter = NULL ;
          ofn.nMaxCustFilter    = 0 ;
          ofn.nFilterIndex      = 0 ;
          ofn.lpstrFile         = szFileName ;
          ofn.nMaxFile          = MAX_PATH ;
          ofn.lpstrFileTitle    = szTitleName ;
          ofn.nMaxFileTitle     = MAX_PATH ;
          ofn.lpstrInitialDir   = NULL ;
          ofn.lpstrTitle        = NULL ;
          ofn.Flags             = 0 ;
          ofn.nFileOffset       = 0 ;
          ofn.nFileExtension    = 0 ;
          ofn.lpstrDefExt       = TEXT ("bmp") ;
          ofn.lCustData         = 0 ;
          ofn.lpfnHook          = NULL ;
          ofn.lpTemplateName    = NULL ;

               // Create the All-Purpose Palette

          hdc = GetDC (hwnd) ;
          hPalette = CreateHalftonePalette (hdc) ;
          ReleaseDC (hwnd, hdc) ;
          return 0 ;

     case WM_SIZE:
          cxClient = LOWORD (lParam) ;
          cyClient = HIWORD (lParam) ;
          return 0 ;

     case WM_COMMAND:
          switch (LOWORD (wParam))
          {
          case IDM_FILE_OPEN:

                    // Show the File Open dialog box

               if (!GetOpenFileName (&ofn))
                    return 0 ;
               
                    // If there's an existing packed DIB, free the memory

               if (pPackedDib)
               {
                    free (pPackedDib) ;
                    pPackedDib = NULL ;
               }
               
                    // Load the packed DIB into memory

               SetCursor (LoadCursor (NULL, IDC_WAIT)) ;
               ShowCursor (TRUE) ;

               pPackedDib = PackedDibLoad (szFileName) ;

               ShowCursor (FALSE) ;
               SetCursor (LoadCursor (NULL, IDC_ARROW)) ;

               if (!pPackedDib)
               {
                    MessageBox (hwnd, TEXT ("Cannot load DIB file"), 
                                szAppName, 0) ;
               }
               InvalidateRect (hwnd, NULL, TRUE) ;
               return 0 ;
          }
          break ;

     case WM_PAINT:
          hdc = BeginPaint (hwnd, &ps) ;

          if (pPackedDib)
          {
                    // Set halftone stretch mode

               SetStretchBltMode (hdc, HALFTONE) ;
               SetBrushOrgEx (hdc, 0, 0, NULL) ;

                    // Select and realize halftone palette

               SelectPalette (hdc, hPalette, FALSE) ;
               RealizePalette (hdc) ;

                    // StretchDIBits rather than SetDIBitsToDevice
          
               StretchDIBits (hdc, 
                              0,   
                              0,   
                              PackedDibGetWidth (pPackedDib), 
                              PackedDibGetHeight (pPackedDib),
                              0,                            
                              0,                            
                              PackedDibGetWidth (pPackedDib),
                              PackedDibGetHeight (pPackedDib),  
                              PackedDibGetBitsPtr (pPackedDib), 
                              pPackedDib, 
                              DIB_RGB_COLORS, 
                              SRCCOPY) ;
          }
          EndPaint (hwnd, &ps) ;
          return 0 ;

     case WM_QUERYNEWPALETTE:
          hdc = GetDC (hwnd) ;
          SelectPalette (hdc, hPalette, FALSE) ;
          RealizePalette (hdc) ;
          InvalidateRect (hwnd, NULL, TRUE) ;

          ReleaseDC (hwnd, hdc) ;
          return TRUE ;

     case WM_PALETTECHANGED:
          if ((HWND) wParam != hwnd)

          hdc = GetDC (hwnd) ;
          SelectPalette (hdc, hPalette, FALSE) ;
          RealizePalette (hdc) ;
          UpdateColors (hdc) ;

          ReleaseDC (hwnd, hdc) ;
          break ;
          
     case WM_DESTROY:
          if (pPackedDib)
               free (pPackedDib) ;

          DeleteObject (hPalette) ;

          PostQuitMessage (0) ;
          return 0 ;
     }
     return DefWindowProc (hwnd, message, wParam, lParam) ;
}
Пример #16
0
VOID vTestXlates(HDC hdc, RECT *prcl)
{
    HPALETTE ahpal[4];
    HPALETTE hPalOld;
    DWORD ulTemp;

    LOGPALETTE256 alog256[4];

    alog256[0].palVersion = 0x300;
    alog256[0].palNumEntries = 256;
    alog256[1].palVersion = 0x300;
    alog256[1].palNumEntries = 256;
    alog256[2].palVersion = 0x300;
    alog256[2].palNumEntries = 256;
    alog256[3].palVersion = 0x300;
    alog256[3].palNumEntries = 256;

    for (ulTemp = 0; ulTemp < 256; ulTemp++)
    {
	alog256[0].palPalEntry[ulTemp].peRed	  = ulTemp;
	alog256[0].palPalEntry[ulTemp].peBlue	  = 0;
	alog256[0].palPalEntry[ulTemp].peGreen	  = 0;
	alog256[0].palPalEntry[ulTemp].peFlags	  = 0;

	alog256[1].palPalEntry[ulTemp].peRed	  = 0;
	alog256[1].palPalEntry[ulTemp].peBlue	  = ulTemp;
	alog256[1].palPalEntry[ulTemp].peGreen	  = 0;
	alog256[1].palPalEntry[ulTemp].peFlags	  = 0;

	alog256[2].palPalEntry[ulTemp].peRed	  = 0;
	alog256[2].palPalEntry[ulTemp].peBlue	  = 0;
	alog256[2].palPalEntry[ulTemp].peGreen	  = ulTemp;
	alog256[2].palPalEntry[ulTemp].peFlags	  = PC_RESERVED;

	alog256[3].palPalEntry[ulTemp].peRed	  = ulTemp;
	alog256[3].palPalEntry[ulTemp].peBlue	  = ulTemp;
	alog256[3].palPalEntry[ulTemp].peGreen	  = ulTemp;
	alog256[3].palPalEntry[ulTemp].peFlags	  = PC_RESERVED;
    }

    ahpal[0] = CreatePalette((LOGPALETTE *) &alog256[0]);
    ahpal[1] = CreatePalette((LOGPALETTE *) &alog256[1]);
    ahpal[2] = CreatePalette((LOGPALETTE *) &alog256[2]);
    ahpal[3] = CreatePalette((LOGPALETTE *) &alog256[3]);

    hPalOld = SelectPalette(hdc,ahpal[0],0);

    for (ulTemp = 0; ulTemp < 20; ulTemp++)
    {
    	SelectPalette(hdc, ahpal[ulTemp % 4], 0);
    	RealizePalette(hdc);
    	UpdateColors(hdc);
    	SetPaletteEntries(ahpal[ulTemp % 4], 0, 256, alog256[ulTemp % 4].palPalEntry);
    	RealizePalette(hdc);
    	UpdateColors(hdc);
    }

    SelectPalette(hdc,hPalOld,0);

    DeleteObject(ahpal[0]);
    DeleteObject(ahpal[1]);
    DeleteObject(ahpal[2]);
    DeleteObject(ahpal[3]);
}
Пример #17
0
LRESULT CALLBACK WndProc(HWND hWnd, UINT messg, 
			 WPARAM wParam, LPARAM lParam)
{
    int i;
    static bool palette_changed = false;

    switch (messg) { 
      case WM_PAINT: 
	if (hdc[0] == 0) {
	    hdc[0] = BeginPaint(hWnd, &ps);
            SelectPalette(hdc[0], hPalette, FALSE);
	    RealizePalette(hdc[0]);
	    hdc[1] = CreateCompatibleDC(hdc[0]);
            SelectPalette(hdc[1], hPalette, FALSE);
	    hdc[2] = CreateCompatibleDC(hdc[0]);
            SelectPalette(hdc[2], hPalette, FALSE);
	    hdc[3] = CreateCompatibleDC(hdc[0]);
            SelectPalette(hdc[3], hPalette, FALSE);

	    screen_width = GetDeviceCaps(hdc[0], HORZRES);
	    screen_height = GetDeviceCaps(hdc[0], VERTRES);
	    hBitmap[active_page] = 
		CreateCompatibleBitmap(hdc[0], screen_width, screen_height);
	    SelectObject(hdc[1], hBitmap[active_page]);	    

	    SetTextColor(hdc[0], PALETTEINDEX(text_color+BG));
	    SetTextColor(hdc[1], PALETTEINDEX(text_color+BG));
	    SetBkColor(hdc[0], PALETTEINDEX(BG));
	    SetBkColor(hdc[1], PALETTEINDEX(BG));

	    SelectObject(hdc[0], hBrush[fill_settings.pattern]);
	    SelectObject(hdc[1], hBrush[fill_settings.pattern]);

	    RECT scr;
	    scr.left = -view_settings.left;
	    scr.top = -view_settings.top; 
	    scr.right = screen_width-view_settings.left-1;
	    scr.bottom = screen_height-view_settings.top-1;
	    FillRect(hdc[1], &scr, hBackgroundBrush);
	}
	if (hRgn != NULL) { 
	    SelectClipRgn(hdc[0], NULL);
	}
	if (visual_page != active_page) { 
	    SelectObject(hdc[1], hBitmap[visual_page]); 
	} 
        BitBlt(hdc[0], -view_settings.left, 
	       -view_settings.top, window_width, window_height, 
	       hdc[1], -view_settings.left, -view_settings.top, 
	       SRCCOPY);
	if (hRgn != NULL) { 
	    SelectClipRgn(hdc[0], hRgn);
	}
	if (visual_page != active_page) { 
	    SelectObject(hdc[1], hBitmap[active_page]); 
	} 
	ValidateRect(hWnd, NULL);
	break;
      case WM_SETFOCUS:
	if (palette_changed) { 
	    HPALETTE new_palette = CreatePalette(pPalette);
	    SelectPalette(hdc[0], new_palette, FALSE);
	    RealizePalette(hdc[0]);
	    SelectPalette(hdc[1], new_palette, FALSE);
	    SelectPalette(hdc[2], new_palette, FALSE);
	    SelectPalette(hdc[3], new_palette, FALSE);
	    DeleteObject(hPalette);
	    hPalette = new_palette;
	    palette_changed = false;
	}
	break;
      case WM_PALETTECHANGED: 
	RealizePalette(hdc[0]);
	UpdateColors(hdc[0]);
	palette_changed = true;
	break;
      case WM_DESTROY: 
        EndPaint(hWnd, &ps);
	hdc[0] = 0;
	DeleteObject(hdc[1]);
	DeleteObject(hdc[2]);
	DeleteObject(hdc[3]);
	if (hPutimageBitmap) { 
	    DeleteObject(hPutimageBitmap);
	    hPutimageBitmap = NULL;
	}
	for (i = 0; i < MAX_PAGES; i++) { 
	    if (hBitmap[i] != NULL) {
		DeleteObject(hBitmap[i]);
		hBitmap[i] = 0;
	    }
	}
	DeleteObject(hPalette);
	hPalette = 0;
	PostQuitMessage(0);
	break;
      case WM_SIZE: 
	window_width = LOWORD(lParam);
	window_height = HIWORD(lParam);
	break;
      case WM_TIMER:
	KillTimer(hWnd, TIMER_ID);
	timeout_expired = true;
	break;
      case WM_CHAR:
	kbd_queue.put((TCHAR) wParam);
	break;

		// Handle some mouse events, too (1-Oct-2000, Matthew Weathers, Erik Habbestad)
	  case WM_LBUTTONDOWN:
		  iClickedMouseX = LOWORD(lParam);
		  iClickedMouseY = HIWORD(lParam);
		  bMouseDown = true;
		  iWhichMouseButton = LEFT_BUTTON;
		  break;
	  case WM_LBUTTONUP:
		  iClickedMouseX = LOWORD(lParam);
		  iClickedMouseY = HIWORD(lParam);
		  bMouseUp = true;
		  iWhichMouseButton = LEFT_BUTTON;
		  break;
	  case WM_RBUTTONDOWN:
		  iClickedMouseX = LOWORD(lParam);
		  iClickedMouseY = HIWORD(lParam);
		  bMouseDown = true;
		  iWhichMouseButton = RIGHT_BUTTON;
		  break;
	  case WM_RBUTTONUP:
		  iClickedMouseX = LOWORD(lParam);
		  iClickedMouseY = HIWORD(lParam);
		  bMouseUp = true;
		  iWhichMouseButton = RIGHT_BUTTON;
		  break;
	  case WM_MOUSEMOVE:
		  iCurrentMouseX = LOWORD(lParam);
		  iCurrentMouseY = HIWORD(lParam);
		  break;

      default:
	return DefWindowProc(hWnd, messg, wParam, lParam);
    }
    return 0;
}
Пример #18
0
LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
     static HBITMAP      hBitmap ;
     static HPALETTE     hPalette ;
     static int          cxClient, cyClient ;
     static OPENFILENAME ofn ;
     static PBYTE        pBits ;
     static TCHAR        szFileName [MAX_PATH], szTitleName [MAX_PATH] ;
     static TCHAR        szFilter[] = TEXT ("Bitmap Files (*.BMP)\0*.bmp\0")
                                      TEXT ("All Files (*.*)\0*.*\0\0") ;
     BITMAP              bitmap ;
     BITMAPINFO        * pPackedDib ;
     HDC                 hdc, hdcMem ;
     PAINTSTRUCT         ps ;

     switch (message)
     {
     case WM_CREATE:
          ofn.lStructSize       = sizeof (OPENFILENAME) ;
          ofn.hwndOwner         = hwnd ;
          ofn.hInstance         = NULL ;
          ofn.lpstrFilter       = szFilter ;
          ofn.lpstrCustomFilter = NULL ;
          ofn.nMaxCustFilter    = 0 ;
          ofn.nFilterIndex      = 0 ;
          ofn.lpstrFile         = szFileName ;
          ofn.nMaxFile          = MAX_PATH ;
          ofn.lpstrFileTitle    = szTitleName ;
          ofn.nMaxFileTitle     = MAX_PATH ;
          ofn.lpstrInitialDir   = NULL ;
          ofn.lpstrTitle        = NULL ;
          ofn.Flags             = 0 ;
          ofn.nFileOffset       = 0 ;
          ofn.nFileExtension    = 0 ;
          ofn.lpstrDefExt       = TEXT ("bmp") ;
          ofn.lCustData         = 0 ;
          ofn.lpfnHook          = NULL ;
          ofn.lpTemplateName    = NULL ;

          return 0 ;

     case WM_SIZE:
          cxClient = LOWORD (lParam) ;
          cyClient = HIWORD (lParam) ;
          return 0 ;

     case WM_COMMAND:
          switch (LOWORD (wParam))
          {
          case IDM_FILE_OPEN:

                    // Show the File Open dialog box

               if (!GetOpenFileName (&ofn))
                    return 0 ;
               
                    // If there's an existing packed DIB, free the memory

               if (hBitmap)
               {
                    DeleteObject (hBitmap) ;
                    hBitmap = NULL ;
               }
               
                    // If there's an existing logical palette, delete it

               if (hPalette)
               {
                    DeleteObject (hPalette) ;
                    hPalette = NULL ;
               }
               
                    // Load the packed DIB into memory

               SetCursor (LoadCursor (NULL, IDC_WAIT)) ;
               ShowCursor (TRUE) ;

               pPackedDib = PackedDibLoad (szFileName) ;

               ShowCursor (FALSE) ;
               SetCursor (LoadCursor (NULL, IDC_ARROW)) ;

               if (pPackedDib)
               {
                         // Create the DIB section from the DIB

                    hBitmap = CreateDIBSection (NULL,
                                             pPackedDib, 
                                             DIB_RGB_COLORS,
                                             &pBits, 
                                             NULL, 0) ;

                         // Copy the bits

                    CopyMemory (pBits, PackedDibGetBitsPtr  (pPackedDib),
                                       PackedDibGetBitsSize (pPackedDib)) ;

                         // Create palette from the DIB

                    hPalette = PackedDibCreatePalette (pPackedDib) ;

                         // Free the packed-DIB memory

                    free (pPackedDib) ;
               }
               else
               {
                    MessageBox (hwnd, TEXT ("Cannot load DIB file"), 
                                szAppName, 0) ;
               }
               InvalidateRect (hwnd, NULL, TRUE) ;
               return 0 ;
          }
          break ;

     case WM_PAINT:
          hdc = BeginPaint (hwnd, &ps) ;

          if (hPalette)
          {
               SelectPalette (hdc, hPalette, FALSE) ;
               RealizePalette (hdc) ;
          }
          if (hBitmap)
          {
               GetObject (hBitmap, sizeof (BITMAP), &bitmap) ;

               hdcMem = CreateCompatibleDC (hdc) ;
               SelectObject (hdcMem, hBitmap) ;

               BitBlt (hdc,    0, 0, bitmap.bmWidth, bitmap.bmHeight, 
                       hdcMem, 0, 0, SRCCOPY) ;

               DeleteDC (hdcMem) ;
          }
          EndPaint (hwnd, &ps) ;
          return 0 ;

     case WM_QUERYNEWPALETTE:
          if (!hPalette)
               return FALSE ;

          hdc = GetDC (hwnd) ;
          SelectPalette (hdc, hPalette, FALSE) ;
          RealizePalette (hdc) ;
          InvalidateRect (hwnd, NULL, TRUE) ;

          ReleaseDC (hwnd, hdc) ;
          return TRUE ;

     case WM_PALETTECHANGED:
          if (!hPalette || (HWND) wParam == hwnd)
               break ;

          hdc = GetDC (hwnd) ;
          SelectPalette (hdc, hPalette, FALSE) ;
          RealizePalette (hdc) ;
          UpdateColors (hdc) ;

          ReleaseDC (hwnd, hdc) ;
          break ;

          
     case WM_DESTROY:
          if (hBitmap)
               DeleteObject (hBitmap) ;

          if (hPalette)
               DeleteObject (hPalette) ;

          PostQuitMessage (0) ;
          return 0 ;
     }
     return DefWindowProc (hwnd, message, wParam, lParam) ;
}
Пример #19
0
void M2Object::DrawZOnly( const noMat4& world, const mat4& view, const mat4& proj )
{
	view_ = view;

	if (!animated) {


	}
	else {		


		static size_t fps = 0;
		mat4* frameMatrices = NULL;

		M2Mesh* mesh = Owner_->mesh_;

		renderer->resetToDefaults();	
		if (animGeom)	
		{
			std::vector<noMat4> temp;

			temp.resize(header.nBones);
			for (size_t i=0; i<header.nBones; i++) 
				temp[i] = bones[i].mat;



			//float ClearColor[4] = { 0.0f, 0.125f, 0.3f, 1.0f }; // red,green,blue,alpha
			//renderer->clear(true, true, false, ClearColor, 1.f);
			int num =  numPass;	
			//num = 2;
			noVec4 ocolor, ecolor;
			for (int i = 0; i < num; i++)						
			{
				const RenderData& rd = render_data[i];

				if (!UpdateColors(rd.colorIndex, rd.opacity, rd.unlit, ocolor, ecolor))
					continue;

				renderer->reset();
							
				renderer->setVertexFormat(rd.vf);				
				renderer->setVertexBuffer(0, rd.vb);				
				renderer->setIndexBuffer(rd.ib);				
				renderer->apply();
				
				if (AppSettings::ShadowModeEnum == SHADOW_SSAO)
					GetApp()->SSAORender_->SetSkinDepthShader((noMat4*)&world, &temp[0], header.nBones);
				else 
					LIDRenderer::GetSingletonPtr()->BeginDepthSkinRender(GetApp()->ActiveCam_, D3D11Context(), world.ToFloatPtr(), &temp[0], header.nBones);		
				
				renderer->drawElements(rd.prim, rd.startIndex, rd.endIndex, 0, rd.vertexEnd);											
			}
		}
		else 
		{
			noVec4 ocolor, ecolor;
			for (int i = 0; i < numPass; i++)
			{
				const RenderData& rd = render_data[i];

				if (!UpdateColors(rd.colorIndex, rd.opacity, rd.unlit, ocolor, ecolor))
					continue;

				renderer->reset();
												
				renderer->setVertexFormat(rd.vf);				
				renderer->setVertexBuffer(0, rd.vb);				
				renderer->setIndexBuffer(rd.ib);				
				renderer->apply();
				
				if (AppSettings::ShadowModeEnum == SHADOW_SSAO)
					GetApp()->SSAORender_->SetDepthShader((noMat4*)&world);
				else 
					LIDRenderer::GetSingletonPtr()->BeginDepthRender(GetApp()->ActiveCam_, D3D11Context(), world.ToFloatPtr());									
				
				renderer->drawElements(rd.prim, rd.startIndex, rd.endIndex, 0, rd.vertexEnd);											
			}
		}
	}
}
Пример #20
0
void M2Object::DrawModel( const mat4& world, const mat4& view, const mat4& proj )
{
	view_ = view;

	if (!animated) {


	}
	else {		
						
		static int i = 0;
		static int currAnim = 3;
		/*if (currAnim >= header.nAnimations)
		{
			currAnim = 0;			
		}*/

		/*animManager->SetAnim(0, currAnim, 0);
		animManager->Play();					*/

		static size_t fps = 0;
		mat4* frameMatrices = NULL;

#if 0
		if (animManager->GetCurrAnim())
		{		


			if (fps++ >= 3)
			{
				i++;
				fps = 0;
			}

			if (i >= animManager->GetCurrAnim()->GetNumFrames())		
			{
				i = 0;
				//++currAnim;
			}
											
			frameMatrices = animManager->GetCurrAnim()->GetFrame2(i);
		}
#endif

		renderer->resetToDefaults();
		if (animGeom)	
		{
			std::vector<mat4> temp;
			
			temp.resize(header.nBones);
			for (size_t i=0; i<header.nBones; i++) 
				temp[i] = bones[i].rdmat;
			
			
						
			//float ClearColor[4] = { 0.0f, 0.125f, 0.3f, 1.0f }; // red,green,blue,alpha
			//renderer->clear(true, true, false, ClearColor, 1.f);
			int num =  numPass;				
			noVec4 ocolor, ecolor;
			for (int i = 0; i < num; i++)						
			{
				const RenderData& rd = render_data[i];

				if (!UpdateColors(rd.colorIndex, rd.opacity, rd.unlit, ocolor, ecolor) || !rd.visible)
					continue;

				LIDRenderer::GetSingletonPtr()->UpdateMaterial(D3D11Context(), ecolor, ocolor, noVec3(0.5f, 0.5f, 0.5f), 0);				
				
				
				renderer->reset();	
				renderer->setVertexFormat(rd.vf);
				renderer->setVertexBuffer(0, rd.vb);
				renderer->setIndexBuffer(rd.ib);
				renderer->setRasterizerState(rd.cull);
				renderer->setShader(rd.shader);	
				//renderer->setShaderConstant3f("g_localLightPos", vec3(gLight.m_mInvView.rows[3].x, gLight.m_mInvView.rows[3].y, gLight.m_mInvView.rows[3].z));
				renderer->setSamplerState("g_samLinear", render_data[0].diffuseSampler);
				renderer->setTexture("g_txDiffuse", rd.baseTex);	
				//if (rd.bumpTex != -1) renderer->setTexture("g_txBump", rd.bumpTex);
				if (rd.blendMode != -1) renderer->setBlendState(rd.blendMode);
				else 
				{
					float blendFactor[4] = {1, 1, 1, 1};
					D3D11Context()->OMSetBlendState(GetApp()->blendStates_->BlendDisabled(), blendFactor, 0xFFFFFFF);			
				}
				if (rd.depthMode != -1) renderer->setDepthState(rd.depthMode);				
				else 
				{
					D3D11Context()->OMSetDepthStencilState(GetApp()->depthStencilStates_->DepthDisabled(), 0.f);
					
				}
				
				renderer->setShaderConstant4x4f("g_mWorld", world);
				//renderer->setShaderConstant4x4f("g_mViewProj", view * proj);
				renderer->setShaderConstant4x4f("g_mView", view);

				//mat4 invView = transpose(view);
				//renderer->setShaderConstant4x4f("InvView", invView);
				//renderer->setShaderConstant3f("g_localEye", invView.getTrans());
				renderer->setShaderConstant4x4f("g_mWorldViewProjection",  world *view * proj);
				//renderer->setShaderConstant4x4f("View", view);
				//renderer->setShaderConstant4x4f("Projection", proj);	
				//renderer->setShaderConstantArray4x4f("g_matrices", frameMatrices, header.nBones);
				renderer->setShaderConstantArray4x4f("g_matrices", &temp[0], header.nBones);		
				
				renderer->apply();
				
				renderer->drawElements(PRIM_TRIANGLES, rd.startIndex, rd.endIndex, rd.vertexStart, rd.vertexEnd);

			}
		}
		else 
		{
			noVec4 ocolor, ecolor;
			for (int i = 0; i < numPass; i++)
			{
				const RenderData& rd = render_data[i];

				if (!UpdateColors(rd.colorIndex, rd.opacity, rd.unlit, ocolor, ecolor))
					continue;

				LIDRenderer::GetSingletonPtr()->UpdateMaterial(D3D11Context(), ecolor, ocolor);

				renderer->reset();	
				renderer->setVertexFormat(rd.vf);
				renderer->setVertexBuffer(0, rd.vb);
				renderer->setIndexBuffer(rd.ib);
				renderer->setRasterizerState(rd.cull);
				renderer->setShader(rd.shader);					
				//renderer->setSamplerState("g_samShadowMap", gPassmSampler);				
				renderer->setSamplerState("g_samLinear", render_data[0].diffuseSampler);
				renderer->setTexture("g_txDiffuse", rd.baseTex);			
				if (rd.blendMode != -1) renderer->setBlendState(rd.blendMode);
				else 
				{
					float blendFactor[4] = {1, 1, 1, 1};
					D3D11Context()->OMSetBlendState(GetApp()->blendStates_->BlendDisabled(), blendFactor, 0xFFFFFFF);			
				}
				if (rd.depthMode != -1) renderer->setDepthState(rd.depthMode);				
				else 
				{
					D3D11Context()->OMSetDepthStencilState(GetApp()->depthStencilStates_->DepthDisabled(), 0.f);
				}
				
				renderer->setShaderConstant4x4f("World", world);
				renderer->setShaderConstant4x4f("View", view);
				renderer->setShaderConstant4x4f("Projection", proj);	
				vec3 eye;
				GetApp()->ActiveCam_->getFrom((float*)eye);
				renderer->setShaderConstant3f("vecEye", eye);
				vec3 Lightdir(gSun.GetDir().x, gSun.GetDir().y, gSun.GetDir().z);	
				renderer->setShaderConstant3f("vecLightDir", Lightdir);
				//vec4 diffuse(0.25098f, 0.435294f, 0.901961f, 1.f);
				renderer->setShaderConstant4f("vDIC", vec4(gSun.m_diffuseColor.x , gSun.m_diffuseColor.y, gSun.m_diffuseColor.z, 1));
				vec4 specular(0.135f, 0.135f, 0.135f, 10.f);
				renderer->setShaderConstant4f("vSpecIC", specular);	

				renderer->apply();				
				renderer->drawElements(PRIM_TRIANGLES, rd.startIndex, rd.endIndex, rd.vertexStart, rd.vertexEnd);
			}
		}
	}
}
		ibool Launcher::Colors::OnPaint(Param&)
		{
			UpdateColors();
			return false;
		}
		ibool Launcher::Colors::OnInitDialog(Param&)
		{
			UpdateColors();
			return true;
		}
Пример #23
0
void M2Object::DrawCascaded()
{
	/*if (!animated) {


	}
	else*/ {		
		static size_t fps = 0;
		mat4* frameMatrices = NULL;

		M2Mesh* mesh = Owner_->mesh_;

		renderer->resetToDefaults();
		Direct3D11Renderer* Dx11R = (Direct3D11Renderer*)renderer;

		if (animGeom)	
		{
			std::vector<mat4> temp;

			temp.resize(header.nBones);
			for (size_t i=0; i<header.nBones; i++) 
				temp[i] = bones[i].rdmat;

			//float ClearColor[4] = { 0.0f, 0.125f, 0.3f, 1.0f }; // red,green,blue,alpha
			//renderer->clear(true, true, false, ClearColor, 1.f);
			int num =  numPass;	
			//num = 2;
			noVec4 ocolor, ecolor;
			for (int i = 0; i < num; i++)						
			{
				const RenderData& rd = render_data[i];

				if (!UpdateColors(rd.colorIndex, rd.opacity, rd.unlit, ocolor, ecolor))
					continue;

				renderer->reset();	
				renderer->changeVertexFormat(rd.vf);
				renderer->changeVertexBuffer(0, rd.vb);
				renderer->changeIndexBuffer(rd.ib);		
								
				//renderer->setShaderConstantArray4x4f("g_matrices", &temp[0], header.nBones);				
				renderer->drawElements(rd.prim, rd.startIndex, rd.endIndex, 0, rd.vertexEnd);															
				
				ID3D11ShaderResourceView* srv = Dx11R->getTextureSRV(rd.baseTex);
				D3D11Context()->PSSetShaderResources(0, 1, &srv);				
			}
		}
		else 
		{
			noVec4 ocolor, ecolor;
			for (int i = 0; i < numPass; i++)
			{
				const RenderData& rd = render_data[i];

				if (!UpdateColors(rd.colorIndex, rd.opacity, rd.unlit, ocolor, ecolor))
					continue;

				renderer->reset();	
				renderer->changeVertexFormat(rd.vf);
				renderer->changeVertexBuffer(0, rd.vb);
				renderer->changeIndexBuffer(rd.ib);								

				ID3D11ShaderResourceView* srv = Dx11R->getTextureSRV(rd.baseTex);
				D3D11Context()->PSSetShaderResources(0, 1, &srv);				
				renderer->drawElements(rd.prim, rd.startIndex, rd.endIndex, 0, rd.vertexEnd);											
			}
		}
	}

}
Пример #24
0
LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
     static HPALETTE hPalette ;
     static int      cxClient, cyClient ;
     HBRUSH          hBrush ;
     HDC             hdc ;
     int             i ;
     LOGPALETTE    * plp ;
     PAINTSTRUCT     ps ;
     RECT            rect ;
     
     switch (message)
     {
     case WM_CREATE:
               // Set up a LOGPALETTE structure and create a palette

          plp = malloc (sizeof (LOGPALETTE) + 64 * sizeof (PALETTEENTRY)) ;

          plp->palVersion    = 0x0300 ;
          plp->palNumEntries = 65 ;

          for (i = 0 ; i < 65 ; i++)
          {
               plp->palPalEntry[i].peRed   = (BYTE) min (255, 4 * i) ;
               plp->palPalEntry[i].peGreen = (BYTE) min (255, 4 * i) ;
               plp->palPalEntry[i].peBlue  = (BYTE) min (255, 4 * i) ;
               plp->palPalEntry[i].peFlags = 0 ;
          }
          hPalette = CreatePalette (plp) ;
          free (plp) ;
          return 0 ;

     case WM_SIZE:
          cxClient = LOWORD (lParam) ;
          cyClient = HIWORD (lParam) ;
          return 0 ;
          
     case WM_PAINT:
          hdc = BeginPaint (hwnd, &ps) ;

               // Select and realize the palette in the device context

          SelectPalette (hdc, hPalette, FALSE) ;
          RealizePalette (hdc) ;

               // Draw the fountain of grays

          for (i = 0 ; i < 65 ; i++)
          {
               rect.left   = i * cxClient / 64 ;
               rect.top    = 0 ;
               rect.right  = (i + 1) * cxClient / 64 ;
               rect.bottom = cyClient ;

               hBrush = CreateSolidBrush (PALETTERGB (min (255, 4 * i), 
                                                      min (255, 4 * i), 
                                                      min (255, 4 * i))) ;
               FillRect (hdc, &rect, hBrush) ;
               DeleteObject (hBrush) ;
          }
          EndPaint (hwnd, &ps) ;
          return 0 ;

     case WM_QUERYNEWPALETTE:
          if (!hPalette)
               return FALSE ;

          hdc = GetDC (hwnd) ;
          SelectPalette (hdc, hPalette, FALSE) ;
          RealizePalette (hdc) ;
          InvalidateRect (hwnd, NULL, TRUE) ;

          ReleaseDC (hwnd, hdc) ;
          return TRUE ;

     case WM_PALETTECHANGED:
          if (!hPalette || (HWND) wParam == hwnd)
               break ;

          hdc = GetDC (hwnd) ;
          SelectPalette (hdc, hPalette, FALSE) ;
          RealizePalette (hdc) ;
          UpdateColors (hdc) ;

          ReleaseDC (hwnd, hdc) ;
          break ;

     case WM_DESTROY:
          DeleteObject (hPalette) ;
          PostQuitMessage (0) ;
          return 0 ;
     }
     return DefWindowProc (hwnd, message, wParam, lParam) ;
}
Пример #25
0
void Button::SetAcionUpState(){
	if(!is_toggle_button)
		state_clicked = false;

	UpdateColors();
}
Пример #26
0
void M2Object::DrawShadow( const mat4& world, const mat4& view, const mat4& proj )
{
	view_ = view;

	if (!animated) {


	}
	else {		
						
	
		static size_t fps = 0;
		mat4* frameMatrices = NULL;

		M2Mesh* mesh = Owner_->mesh_;
		renderer->resetToDefaults();
				
		if (animGeom)	
		{
			std::vector<mat4> temp;
			
			temp.resize(header.nBones);
			for (size_t i=0; i<header.nBones; i++) 
				temp[i] = bones[i].rdmat;
			
			
			
			//float ClearColor[4] = { 0.0f, 0.125f, 0.3f, 1.0f }; // red,green,blue,alpha
			//renderer->clear(true, true, false, ClearColor, 1.f);
			int num =  numPass;	
			//num = 2;
			noVec4 ocolor, ecolor;
			for (int i = 0; i < num; i++)						
			{
				const RenderData& rd = render_data[i];

				if (!UpdateColors(rd.colorIndex, rd.opacity, rd.unlit, ocolor, ecolor))
					continue;

				renderer->reset();	
				renderer->setVertexFormat(rd.vf);
				renderer->setVertexBuffer(0, rd.vb);
				renderer->setIndexBuffer(rd.ib);
				renderer->setRasterizerState(rd.cull);
				renderer->setShader(gPssmSkinned);					
				if (rd.blendMode != -1) renderer->setBlendState(rd.blendMode);
				if (rd.depthMode != -1) renderer->setDepthState(rd.depthMode);

				// set split range				
				renderer->setShaderConstant1i("g_iFirstSplit", mesh->m_iFirstSplit);
				renderer->setShaderConstant1i("g_iLastSplit", mesh->m_iLastSplit);								
				renderer->setShaderConstant4x4f("g_mWorld", world);
				renderer->setShaderConstant4x4f("g_mViewProj", view * proj);				
				renderer->setShaderConstantArray4x4f("g_mCropMatrix", &mCropMatrix[0], 4);				
				//renderer->setShaderConstant4x4f("View", view);
				//renderer->setShaderConstant4x4f("Projection", proj);	
				renderer->setShaderConstantArray4x4f("g_matrices", &temp[0], header.nBones);

				renderer->apply();
				GetApp()->GetContext()->IASetPrimitiveTopology(D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST);
				int iNumInstances = mesh->m_iLastSplit - mesh->m_iFirstSplit + 1;
				D3D11Context()->DrawIndexedInstanced(rd.endIndex, iNumInstances, rd.startIndex, 0, 0);
			}
		}
		else 
		{
			noVec4 ocolor, ecolor;
			for (int i = 0; i < numPass; i++)
			{
				const RenderData& rd = render_data[i];

				if (!UpdateColors(rd.colorIndex, rd.opacity, rd.unlit, ocolor, ecolor))
					continue;

				renderer->reset();	
				renderer->setVertexFormat(rd.vf);
				renderer->setVertexBuffer(0, rd.vb);
				renderer->setIndexBuffer(rd.ib);
				renderer->setRasterizerState(rd.cull);
				renderer->setShader(gPssm);	
				//renderer->setSamplerState("samLinear", render_data[0].linear);
				//renderer->setTexture("txDiffuse", rd.baseTex);			
				if (rd.blendMode != -1) renderer->setBlendState(rd.blendMode);
				if (rd.depthMode != -1) renderer->setDepthState(rd.depthMode);
				
				renderer->setShaderConstant1i("g_iFirstSplit", mesh->m_iFirstSplit);
				renderer->setShaderConstant1i("g_iLastSplit", mesh->m_iLastSplit);								
				renderer->setShaderConstantArray4x4f("g_mCropMatrix", &mCropMatrix[0], 4);
				renderer->setShaderConstant4x4f("g_mWorld", world);
				renderer->setShaderConstant4x4f("g_mViewProj", view * proj);
				
				renderer->apply();				
				GetApp()->GetContext()->IASetPrimitiveTopology(D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST);
				int iNumInstances = mesh->m_iLastSplit - mesh->m_iFirstSplit + 1;
				D3D11Context()->DrawIndexedInstanced(rd.endIndex, iNumInstances, rd.startIndex, 0, 0);				
			}
		}
	}
}
Пример #27
0
// Window procedure, handles all messages for this program
LRESULT CALLBACK WndProc(HWND    hWnd,
	UINT    message,
	WPARAM  wParam,
	LPARAM  lParam)
{
	static HGLRC hRC;               // Permenant Rendering context
	static HDC hDC;                 // Private GDI Device context

	switch (message)
	{
		// Window creation, setup for OpenGL
	case WM_CREATE:

		SetTimer(hWnd, 1002, Tools::refreshFreq, NULL);
		// Store the device context
		hDC = GetDC(hWnd);

		// Select the pixel format
		SetDCPixelFormat(hDC);

		// Create palette if needed
		hPalette = GetOpenGLPalette(hDC);

		// Create the rendering context and make it current
		hRC = wglCreateContext(hDC);
		wglMakeCurrent(hDC, hRC);
		SetupRC();


		nazwa = "Moon.bmp";
		const char* bitmapFileName;
		bitmapFileName =nazwa.c_str();
		glGenTextures(1, &texture);                  // tworzy obiekt tekstury			
													 // 3aduje pierwszy obraz tekstury:
		bitmapData = LoadBitmapFile((char*)bitmapFileName, &bitmapInfoHeader);

		glBindTexture(GL_TEXTURE_2D, texture);       // aktywuje obiekt tekstury

		glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
		glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);

		glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
		glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);

		// tworzy obraz tekstury
		glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, bitmapInfoHeader.biWidth,
			bitmapInfoHeader.biHeight, 0, GL_RGB, GL_UNSIGNED_BYTE, bitmapData);

		//if (bitmapData)
		//free(bitmapData);
/*
		GLuint texture;
		int width, height;
		unsigned char* image;
		// Load textures
		glGenTextures(1, &texture);
		image = LoadBitmapFile("Bitmapy//Moon.bmp",&bitmapInfoHeader);
		

		// select our current texture
		glBindTexture(GL_TEXTURE_2D, texture);

		// select modulate to mix texture with color for shading
		glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
		glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);

		glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
		glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);

		glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, bitmapInfoHeader.biWidth,
			bitmapInfoHeader.biHeight, 0, GL_RGB, GL_UNSIGNED_BYTE, bitmapData);
	
	*/
			
		// 3aduje drugi obraz tekstury:
		/*
		bitmapData = LoadBitmapFile("Bitmapy\\crate.bmp", &bitmapInfoHeader);
		glBindTexture(GL_TEXTURE_2D, texture[1]);       // aktywuje obiekt tekstury

		glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
		glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);

		glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP);
		glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP);

		// tworzy obraz tekstury
		glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, bitmapInfoHeader.biWidth,
			bitmapInfoHeader.biHeight, 0, GL_RGB, GL_UNSIGNED_BYTE, bitmapData);
			

		if (bitmapData)
			free(bitmapData);
			*/

		// ustalenie sposobu mieszania tekstury z t3em
		//glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
		break;

		// Window is being destroyed, cleanup
	case WM_DESTROY:
		// Deselect the current rendering context and delete it
		wglMakeCurrent(hDC, NULL);
		wglDeleteContext(hRC);

		// Delete the palette if it was created
		if (hPalette != NULL)
			DeleteObject(hPalette);

		// Tell the application to terminate after the window
		// is gone.
		PostQuitMessage(0);
		break;

		// Window is resized.
	case WM_SIZE:
		// Call our function which modifies the clipping
		// volume and viewport
		ChangeSize(LOWORD(lParam), HIWORD(lParam));
		break;


		// The painting function.  This message sent by Windows 
		// whenever the screen needs updating.
	case WM_PAINT:
	{
	
		
	}

	case WM_TIMER:
	{

		// Call OpenGL drawing code
		position = world->getPosition();
		v = world->getVelocity();
		fuel = 1000 * world->getFuel();
		velocity = v.y;
		velocityx = v.x / 2;
		velocityz = v.z / 2;
		height = position.y / 20;
		score = world->getHighscore();
		if (score > highscore)
		{
			highscore = score;
		}
		RenderScene();

		SwapBuffers(hDC);
		if (spisSet)
		{
			world->control[0] = true;
		}
		else
		{
			world->control[0] = false;
		}
		
		if (s)
		{
			world->control[3] = true;
		}
		else
		{
			world->control[3] = false;
		}
		if (a)
		{
			world->control[2] = true;
		}
		else
		{
			world->control[2] = false;
		}
		if (d)
		{
			world->control[1] = true;
		}
		else
		{
			world->control[1] = false;
		}
		if (w)
		{
			world->control[4] = true;
		}
		else
		{
			world->control[4] = false;
		}
		
		// Validate the newly painted client area
		ValidateRect(hWnd, NULL);
	}

	// Windows is telling the application that it may modify
	// the system palette.  This message in essance asks the 
	// application for a new palette.
	case WM_QUERYNEWPALETTE:
		// If the palette was created.
		if (hPalette)
		{
			int nRet;

			// Selects the palette into the current device context
			SelectPalette(hDC, hPalette, FALSE);

			// Map entries from the currently selected palette to
			// the system palette.  The return value is the number 
			// of palette entries modified.
			nRet = RealizePalette(hDC);

			// Repaint, forces remap of palette in current window
			InvalidateRect(hWnd, NULL, FALSE);

			return nRet;
		}
		break;


		// This window may set the palette, even though it is not the 
		// currently active window.
	case WM_PALETTECHANGED:
		// Don't do anything if the palette does not exist, or if
		// this is the window that changed the palette.
		if ((hPalette != NULL) && ((HWND)wParam != hWnd))
		{
			// Select the palette into the device context
			SelectPalette(hDC, hPalette, FALSE);

			// Map entries to system palette
			RealizePalette(hDC);

			// Remap the current colors to the newly realized palette
			UpdateColors(hDC);
			return 0;
		}
		break;

		// Key press, check for arrow keys to do cube rotation.
	case WM_KEYDOWN:
	{
		if (wParam == VK_UP)
			xRot -= 5.0f;

		if (wParam == VK_DOWN)
			xRot += 5.0f;

		if (wParam == VK_LEFT)
			yRot -= 5.0f;

		if (wParam == VK_RIGHT)
			yRot += 5.0f;

		if (wParam == VK_SPACE)
			spisSet = true;

		if (wParam == 0x41)
			a = true;

		if (wParam == 0x44)
			d = true;

		if (wParam == 0x57)
			w = true;

		if (wParam == 0x53)
			s = true;

		if (wParam == 0x52)
			world->tryRefuel();


		xRot = GLfloat((const int)xRot % 360);
		yRot = GLfloat((const int)yRot % 360);


		InvalidateRect(hWnd, NULL, FALSE);
	}
	break;

	case WM_KEYUP:
	{
		if (wParam == VK_SPACE)
			spisSet = false;


		if (wParam == 0x41)
			a = false;

		if (wParam == 0x44)
			d = false;

		if (wParam == 0x57)
			w = false;

		if (wParam == 0x53)
			s = false;
	}

	case WM_MOUSEMOVE:
	{
		int posX = GET_X_LPARAM(lParam);
		int posY = GET_Y_LPARAM(lParam);
		float xAngle = 0.2f;
		float yAngle = 0.2f;
		int angle = 1.0f;

		if (GetKeyState(VK_LBUTTON) & 0x80)
		{
			/*
			if (posX > mousePosX)
				world->changeCamera(0.0f, angle, 0.0f);
			if (posX < mousePosX)
				world->changeCamera(0.0f, -angle, 0.0f);
			if (posY > mousePosY)
				world->changeCamera(angle, 0.0f, 0.0f);
			if (posY < mousePosY)
				world->changeCamera(-angle, 0.0f, 0.0f);*/

			world->changeCamera((posY - mousePosY)*yAngle, (posX - mousePosX)*xAngle, 0.0f); 
		}

		mousePosX = posX;
		mousePosY = posY;
	}
	break;

	case WM_MOUSEWHEEL:
	{
		int x = GET_Y_LPARAM(wParam);
		if (x > 0)
			world->changeCamera(0.0f, 0.0f, -20.0f);
		if (x < 0)
			world->changeCamera(0.0f, 0.0f, 20.0f);
	}
	break;
	// A menu command
	case WM_COMMAND:
	{
		switch (LOWORD(wParam))
		{
			// Exit the program
		case ID_FILE_EXIT:
			DestroyWindow(hWnd);
			break;

			// Display the about box
		case ID_HELP_ABOUT:
			DialogBox(hInstance,
				MAKEINTRESOURCE(IDD_DIALOG_ABOUT),
				hWnd,
				(DLGPROC)AboutDlgProc);
			break;
		}
	}
	break;


	default:   // Passes it on if unproccessed
		return (DefWindowProc(hWnd, message, wParam, lParam));

	}

	return (0L);
}
Пример #28
0
 void LaserScanPlugin::MaxIntensityChanged(double value)
 {
   max_intensity_ = value;
   UpdateColors();
   canvas_->update();
 }
Пример #29
0
void M2Object::DrawShadowModel( const mat4& world, const mat4& view, const mat4& proj )
{
	view_ = view;

	if (!animated) {


	}
	else {		
						
		static int i = 0;
		static int currAnim = 3;
		/*if (currAnim >= header.nAnimations)
		{
			currAnim = 0;			
		}*/

		/*animManager->SetAnim(0, currAnim, 0);
		animManager->Play();					*/

		static size_t fps = 0;
		mat4* frameMatrices = NULL;

#if 0
		if (animManager->GetCurrAnim())
		{		


			if (fps++ >= 3)
			{
				i++;
				fps = 0;
			}

			if (i >= animManager->GetCurrAnim()->GetNumFrames())		
			{
				i = 0;
				//++currAnim;
			}
											
			frameMatrices = animManager->GetCurrAnim()->GetFrame2(i);
		}
#endif
		renderer->resetToDefaults();	
		M2Mesh* mesh = Owner_->mesh_;
				
		if (animGeom)	
		{
			std::vector<mat4> temp;
			
			temp.resize(header.nBones);
			for (size_t i=0; i<header.nBones; i++) 
				temp[i] = bones[i].rdmat;
			
			
			
			//float ClearColor[4] = { 0.0f, 0.125f, 0.3f, 1.0f }; // red,green,blue,alpha
			//renderer->clear(true, true, false, ClearColor, 1.f);
			int num =  numPass;	
			//num = 2;
			noVec4 ocolor, ecolor;
			for (int i = 0; i < num; i++)						
			{
				const RenderData& rd = render_data[i];

				if (!UpdateColors(rd.colorIndex, rd.opacity, rd.unlit, ocolor, ecolor))
					continue;

				gSun.Apply(1);
				LIDRenderer::GetSingletonPtr()->UpdateMaterial(D3D11Context(), ecolor, ocolor);				

				renderer->reset();	
				renderer->setVertexFormat(rd.vf);
				renderer->setVertexBuffer(0, rd.vb);
				renderer->setIndexBuffer(rd.ib);
				//renderer->setRasterizerState(rd.cull);
				renderer->setShader(rd.shader);		

				ID3D11SamplerState* ss[] = { LIDRenderer::GetSingletonPtr()->GetSamplerState().ShadowMap() };
				D3D11Context()->PSSetSamplers(0, 1, ss);				
				D3D11Context()->PSSetShaderResources(0, 1, &GetShadowMap<PSSMShadowMapDx11>()->m_pSRV);		
				renderer->setSamplerState("g_samLinear", render_data[0].diffuseSampler);
				renderer->setTexture("g_txDiffuse", rd.baseTex);		
				if (rd.bumpTex != -1) 
				{					
					//renderer->setTexture("g_txBump", rd.bumpTex);
				}

				if (rd.blendMode != -1) renderer->setBlendState(rd.blendMode);
				else 
				{
					float blendFactor[4] = {1, 1, 1, 1};
					D3D11Context()->OMSetBlendState(GetApp()->blendStates_->BlendDisabled(), blendFactor, 0xFFFFFFF);			
				}
				if (rd.depthMode != -1) renderer->setDepthState(rd.depthMode);				
				else 
				{
					D3D11Context()->OMSetDepthStencilState(GetApp()->depthStencilStates_->DepthDisabled(), 0.f);
				}

				// set split range												
				renderer->setShaderConstant4x4f("g_mWorld", world);
				renderer->setShaderConstant4x4f("g_mViewProj", view * proj);				
				renderer->setShaderConstant4x4f("g_mView", view);				
				mat4 invView = transpose(view);
				//renderer->setShaderConstant4x4f("InvView", invView);
				renderer->setShaderConstant3f("g_localEye", invView.getTrans());

				renderer->setShaderConstant3f("g_vLightDir", gSun.GetDir().ToFloatPtr());
				renderer->setShaderConstant3f("g_vLightColor", vec3(gSun.m_diffuseColor.ToFloatPtr()));
				renderer->setShaderConstant3f("g_vAmbient", vec3(gSun.m_ambientColor.ToFloatPtr()));	
				renderer->setShaderConstantArray1f("g_fSplitPlane", &g_fSplitPos[1], g_iNumSplits);	
				renderer->setShaderConstant4x4f("g_mWorldViewProjection",  world * view * proj);	
				renderer->setShaderConstantArray4x4f("g_matrices", &temp[0], header.nBones);				
				renderer->setShaderConstantArray4x4f("g_mTextureMatrix", &mTextureMatrix[0], g_iNumSplits);

				renderer->apply();				

				
				renderer->drawElements(rd.prim, rd.startIndex, rd.endIndex, 0, rd.vertexEnd);			
			}
		}
		else 
		{
			noVec4 ocolor, ecolor;
			for (int i = 0; i < numPass; i++)
			{
				const RenderData& rd = render_data[i];

				if (!UpdateColors(rd.colorIndex, rd.opacity, rd.unlit, ocolor, ecolor))
					continue;
				
				renderer->reset();	
				renderer->setVertexFormat(rd.vf);
				renderer->setVertexBuffer(0, rd.vb);
				renderer->setIndexBuffer(rd.ib);
				//renderer->setRasterizerState(rd.cull);
				renderer->setShader(rd.shader);					
				renderer->setSamplerState("g_samLinear", render_data[0].diffuseSampler);
				renderer->setTexture("g_txDiffuse", rd.baseTex);			
				//if (rd.blendMode != -1) renderer->setBlendState(GetApp()->GetBlendMode(5));
				//if (rd.depthMode != -1) renderer->setDepthState(rd.depthMode);
				if (rd.blendMode != -1) renderer->setBlendState(rd.blendMode);
				else 
				{
					float blendFactor[4] = {1, 1, 1, 1};
					D3D11Context()->OMSetBlendState(GetApp()->blendStates_->BlendDisabled(), blendFactor, 0xFFFFFFF);			
				}
				if (rd.depthMode != -1) renderer->setDepthState(rd.depthMode);				
				else 
				{
					D3D11Context()->OMSetDepthStencilState(GetApp()->depthStencilStates_->DepthDisabled(), 0.f);
				}
				
				// set split range												
				renderer->setShaderConstant4x4f("g_mWorld", world);
				renderer->setShaderConstant4x4f("g_mViewProj", view * proj);				
				renderer->setShaderConstant4x4f("g_mView", view);				
				renderer->setShaderConstant3f("g_vLightDir", gSun.GetDir().ToFloatPtr());
				renderer->setShaderConstant3f("g_vLightColor", vec3(gSun.m_diffuseColor.ToFloatPtr()));
				renderer->setShaderConstant3f("g_vAmbient", vec3(gSun.m_ambientColor.ToFloatPtr()));	
				renderer->setShaderConstantArray1f("g_fSplitPlane", &g_fSplitPos[1], g_iNumSplits);	
				renderer->setShaderConstant4x4f("g_mWorldViewProjection",  world * view * proj);	
				renderer->setShaderConstantArray4x4f("g_mTextureMatrix", &mTextureMatrix[0], g_iNumSplits);
				
				renderer->apply();				

				ID3D11SamplerState* ss[] = { LIDRenderer::GetSingletonPtr()->GetSamplerState().ShadowMap() };
				D3D11Context()->PSSetSamplers(1, 1, ss);				
				D3D11Context()->PSSetShaderResources(1, 1, &GetShadowMap<PSSMShadowMapDx11>()->m_pSRV);		
				renderer->drawElements(rd.prim, rd.startIndex, rd.endIndex, 0, rd.vertexEnd);				
			}
		}
	}
	
	// Unbind shader resources
	ID3D11ShaderResourceView* nullViews[8] = {0, 0, 0, 0, 0, 0, 0, 0};
	GetApp()->GetContext()->PSSetShaderResources(0, 8, nullViews);
}
Пример #30
0
void M2Object::DrawSSAO( const mat4& world, const mat4& view, const mat4& proj ) {		
	/*if (!animated) {


	}
	else*/ {		
		static size_t fps = 0;
		mat4* frameMatrices = NULL;

		M2Mesh* mesh = Owner_->mesh_;

		renderer->resetToDefaults();
		Direct3D11Renderer* Dx11R = (Direct3D11Renderer*)renderer;

		if (animGeom)	
		{
			std::vector<mat4> temp;

			temp.resize(header.nBones);
			for (size_t i=0; i<header.nBones; i++) 
				temp[i] = bones[i].rdmat;

			//float ClearColor[4] = { 0.0f, 0.125f, 0.3f, 1.0f }; // red,green,blue,alpha
			//renderer->clear(true, true, false, ClearColor, 1.f);
			int num =  numPass;	
			//num = 2;
			noVec4 ocolor, ecolor;
			for (int i = 0; i < num; i++)						
			{
				const RenderData& rd = render_data[i];

				if (!UpdateColors(rd.colorIndex, rd.opacity, rd.unlit, ocolor, ecolor))
					continue;

				renderer->reset();	
				renderer->setShader(rd.shader);
				renderer->setVertexFormat(rd.vf);
				renderer->setVertexBuffer(0, rd.vb);
				renderer->setIndexBuffer(rd.ib);								
				
				renderer->setShaderConstant4x4f("g_mWorld", world);
				//renderer->setShaderConstant4x4f("g_mViewProj", view * proj);
				renderer->setShaderConstant4x4f("g_mView", view);

				//mat4 invView = transpose(view);
				//renderer->setShaderConstant4x4f("InvView", invView);
				//renderer->setShaderConstant3f("g_localEye", invView.getTrans());
				renderer->setShaderConstant4x4f("g_mWorldViewProjection",  world *view * proj);
				//renderer->setShaderConstant4x4f("View", view);
				//renderer->setShaderConstant4x4f("Projection", proj);	
				renderer->setShaderConstantArray4x4f("g_matrices", &temp[0], header.nBones);				

				renderer->setTexture("g_txDiffuse", rd.baseTex);
				renderer->setSamplerState("g_samLinear", render_data[0].diffuseSampler);

				renderer->apply();
								

				//ID3D11ShaderResourceView* srv = Dx11R->getTextureSRV(rd.baseTex);
				//D3D11Context()->PSSetShaderResources(0, 1, &srv);				
								
				ID3D11ShaderResourceView* aoSRV[] ={ GetApp()->SSAORender_->GetAOSRV() };
				D3D11Context()->PSSetShaderResources(1, 1, aoSRV);				
				
				//renderer->setShaderConstantArray4x4f("g_matrices", &temp[0], header.nBones);				
				renderer->drawElements(rd.prim, rd.startIndex, rd.endIndex, 0, rd.vertexEnd);															
				
				
			}
		}
		else 
		{
			noVec4 ocolor, ecolor;
			for (int i = 0; i < numPass; i++)
			{
				const RenderData& rd = render_data[i];

				if (!UpdateColors(rd.colorIndex, rd.opacity, rd.unlit, ocolor, ecolor))
					continue;
				
				renderer->reset();	
				renderer->setShader(rd.shader);
				renderer->setVertexFormat(rd.vf);
				renderer->setVertexBuffer(0, rd.vb);
				renderer->setIndexBuffer(rd.ib);								

				renderer->setShaderConstant4x4f("World", world);
				//renderer->setShaderConstant4x4f("g_mViewProj", view * proj);
				renderer->setShaderConstant4x4f("View", view);

				//mat4 invView = transpose(view);
				//renderer->setShaderConstant4x4f("InvView", invView);
				//renderer->setShaderConstant3f("g_localEye", invView.getTrans());
				renderer->setShaderConstant4x4f("Projection",  proj);

				renderer->setTexture("g_txDiffuse", rd.baseTex);
				renderer->setSamplerState("g_samLinear", render_data[0].diffuseSampler);

				renderer->apply();
				
				//ID3D11ShaderResourceView* srv = Dx11R->getTextureSRV(rd.baseTex);
				//D3D11Context()->PSSetShaderResources(0, 1, &srv);										

				ID3D11ShaderResourceView* aoSRV[] ={ GetApp()->SSAORender_->GetAOSRV() };
				D3D11Context()->PSSetShaderResources(1, 1, aoSRV);				

				renderer->drawElements(rd.prim, rd.startIndex, rd.endIndex, 0, rd.vertexEnd);											
			}
		}
	}
}