Author: akhaldi Date: Sat Oct 1 21:28:47 2011 New Revision: 53920
URL: http://svn.reactos.org/svn/reactos?rev=53920&view=rev Log: [ROSAPPS/SCREENSAVERS] * Add a new Starfield screensaver. By Carlo Bramini (carlo DOT bramix AT libero DOT it). * Adapted the build system files to get it to compile with current trunk. See issue #6270 for more details.
Added: trunk/rosapps/applications/screensavers/ssstars/ (with props) trunk/rosapps/applications/screensavers/ssstars/CMakeLists.txt (with props) trunk/rosapps/applications/screensavers/ssstars/lang/ (with props) trunk/rosapps/applications/screensavers/ssstars/lang/en-US.rc (with props) trunk/rosapps/applications/screensavers/ssstars/lang/it-IT.rc (with props) trunk/rosapps/applications/screensavers/ssstars/lang/pl-PL.rc (with props) trunk/rosapps/applications/screensavers/ssstars/lang/ru-RU.rc (with props) trunk/rosapps/applications/screensavers/ssstars/makefile (with props) trunk/rosapps/applications/screensavers/ssstars/res/ (with props) trunk/rosapps/applications/screensavers/ssstars/res/cosmicfractal.bmp (with props) trunk/rosapps/applications/screensavers/ssstars/res/icon_stars.ico (with props) trunk/rosapps/applications/screensavers/ssstars/res/star.bmp (with props) trunk/rosapps/applications/screensavers/ssstars/resource.h (with props) trunk/rosapps/applications/screensavers/ssstars/resource.rc (with props) trunk/rosapps/applications/screensavers/ssstars/settings.c (with props) trunk/rosapps/applications/screensavers/ssstars/settings.h (with props) trunk/rosapps/applications/screensavers/ssstars/ssstars.c (with props) trunk/rosapps/applications/screensavers/ssstars/ssstars.rbuild (with props)
Propchange: trunk/rosapps/applications/screensavers/ssstars/ ------------------------------------------------------------------------------ --- bugtraq:logregex (added) +++ bugtraq:logregex Sat Oct 1 21:28:47 2011 @@ -1,0 +1,2 @@ +([Ii]ssue|[Bb]ug)s? #?(\d+)(,? ?#?(\d+))*(,? ?(and |or )?#?(\d+))? +(\d+)
Propchange: trunk/rosapps/applications/screensavers/ssstars/ ------------------------------------------------------------------------------ bugtraq:message = See issue #%BUGID% for more details.
Propchange: trunk/rosapps/applications/screensavers/ssstars/ ------------------------------------------------------------------------------ bugtraq:url = http://www.reactos.org/bugzilla/show_bug.cgi?id=%BUGID%
Added: trunk/rosapps/applications/screensavers/ssstars/CMakeLists.txt URL: http://svn.reactos.org/svn/reactos/trunk/rosapps/applications/screensavers/s... ============================================================================== --- trunk/rosapps/applications/screensavers/ssstars/CMakeLists.txt (added) +++ trunk/rosapps/applications/screensavers/ssstars/CMakeLists.txt [iso-8859-1] Sat Oct 1 21:28:47 2011 @@ -1,0 +1,15 @@ + +set_rc_compiler() + +add_executable(ssstars + ssstars.c + settings.c + resource.rc) + +set_module_type(ssstars win32gui UNICODE) +set_target_properties(ssstars PROPERTIES SUFFIX ".scr") + +target_link_libraries(ssstars scrnsave) +add_importlibs(ssstars user32 gdi32 opengl32 glu32 advapi32 comctl32 shell32 msvcrt kernel32) + +add_cd_file(TARGET ssstars DESTINATION reactos/system32 FOR all)
Propchange: trunk/rosapps/applications/screensavers/ssstars/CMakeLists.txt ------------------------------------------------------------------------------ svn:eol-style = native
Propchange: trunk/rosapps/applications/screensavers/ssstars/lang/ ------------------------------------------------------------------------------ --- bugtraq:logregex (added) +++ bugtraq:logregex Sat Oct 1 21:28:47 2011 @@ -1,0 +1,2 @@ +([Ii]ssue|[Bb]ug)s? #?(\d+)(,? ?#?(\d+))*(,? ?(and |or )?#?(\d+))? +(\d+)
Propchange: trunk/rosapps/applications/screensavers/ssstars/lang/ ------------------------------------------------------------------------------ bugtraq:message = See issue #%BUGID% for more details.
Propchange: trunk/rosapps/applications/screensavers/ssstars/lang/ ------------------------------------------------------------------------------ bugtraq:url = http://www.reactos.org/bugzilla/show_bug.cgi?id=%BUGID%
Added: trunk/rosapps/applications/screensavers/ssstars/lang/en-US.rc URL: http://svn.reactos.org/svn/reactos/trunk/rosapps/applications/screensavers/s... ============================================================================== --- trunk/rosapps/applications/screensavers/ssstars/lang/en-US.rc (added) +++ trunk/rosapps/applications/screensavers/ssstars/lang/en-US.rc [iso-8859-1] Sat Oct 1 21:28:47 2011 @@ -1,0 +1,52 @@ +LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US + +// Dialog + +DLG_SCRNSAVECONFIGURE DIALOGEX 0, 0, 292, 282 +STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION +CAPTION "Settings" +FONT 8, "MS Shell Dlg" +BEGIN + GROUPBOX "Options",IDC_STATIC,16,100,260,76 + RTEXT "Number of stars:",IDC_STATIC,24,116,68,12, + SS_CENTERIMAGE + CONTROL "Slider1",IDC_SLIDER_NUM_OF_STARS,"msctls_trackbar32", + TBS_BOTH | TBS_NOTICKS | WS_TABSTOP,96,116,140,12 + CTEXT "Static",IDC_TEXT_NUM_OF_STARS,240,116,24,12, + SS_CENTERIMAGE,WS_EX_STATICEDGE + RTEXT "Speed:",IDC_STATIC,24,137,68,12,SS_CENTERIMAGE + CONTROL "Slider1",IDC_SLIDER_SPEED,"msctls_trackbar32",TBS_BOTH | + TBS_NOTICKS | WS_TABSTOP,96,137,140,12 + CTEXT "Static",IDC_TEXT_SPEED,240,137,24,12,SS_CENTERIMAGE, + WS_EX_STATICEDGE + RTEXT "Rotation:",IDC_STATIC,24,156,68,12,SS_CENTERIMAGE + COMBOBOX IDC_COMBO_ROTATION,100,156,80,60,CBS_DROPDOWNLIST | + WS_TABSTOP + CONTROL "",IDC_IMAGE_COSMOS,"Static",SS_BITMAP | SS_CENTERIMAGE, + 4,4,284,92 + GROUPBOX "Advanced",IDC_STATIC,16,180,260,72 + CONTROL "Enable background blending",IDC_CHECK_DOBLENDING, + "Button",BS_AUTOCHECKBOX | WS_TABSTOP,24,196,110,10 + CONTROL "Enable accurate perspective correction", + IDC_CHECK_PERSPECTIVE,"Button",BS_AUTOCHECKBOX | + WS_TABSTOP,24,208,142,10 + CONTROL "Enable texture filtering",IDC_CHECK_FILTERING, + "Button",BS_AUTOCHECKBOX | WS_TABSTOP,24,220,90,10 + CONTROL "Enable smooth shading",IDC_CHECK_SHADING,"Button", + BS_AUTOCHECKBOX | WS_TABSTOP,24,232,100,10 + PUSHBUTTON "OK",IDOK,60,260,52,16 + PUSHBUTTON "Cancel",IDCANCEL,120,260,52,16 + PUSHBUTTON "About",IDC_BUTTON_ABOUT,179,260,52,16 +END + +// String Tables + +STRINGTABLE DISCARDABLE +BEGIN + IDS_DESCRIPTION "Starfield" + IDS_ROTATION_NONE "None" + IDS_ROTATION_LINEAR "Linear" + IDS_ROTATION_PERIODIC "Periodic" + IDS_LICENSE "Starfield is free software released under GNU GPL license." + IDS_AUTHOR "Written by Carlo Bramini" +END
Propchange: trunk/rosapps/applications/screensavers/ssstars/lang/en-US.rc ------------------------------------------------------------------------------ svn:eol-style = native
Added: trunk/rosapps/applications/screensavers/ssstars/lang/it-IT.rc URL: http://svn.reactos.org/svn/reactos/trunk/rosapps/applications/screensavers/s... ============================================================================== --- trunk/rosapps/applications/screensavers/ssstars/lang/it-IT.rc (added) +++ trunk/rosapps/applications/screensavers/ssstars/lang/it-IT.rc [iso-8859-1] Sat Oct 1 21:28:47 2011 @@ -1,0 +1,52 @@ +LANGUAGE LANG_ITALIAN, SUBLANG_NEUTRAL + +// Dialog + +DLG_SCRNSAVECONFIGURE DIALOGEX 0, 0, 292, 282 +STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION +CAPTION "Impostazioni" +FONT 8, "MS Shell Dlg" +BEGIN + GROUPBOX "Opzioni",IDC_STATIC,16,100,260,76 + RTEXT "Numero di stelle:",IDC_STATIC,24,116,68,12, + SS_CENTERIMAGE + CONTROL "Slider1",IDC_SLIDER_NUM_OF_STARS,"msctls_trackbar32", + TBS_BOTH | TBS_NOTICKS | WS_TABSTOP,96,116,140,12 + CTEXT "Static",IDC_TEXT_NUM_OF_STARS,240,116,24,12, + SS_CENTERIMAGE,WS_EX_STATICEDGE + RTEXT "Velocità:",IDC_STATIC,24,137,68,12,SS_CENTERIMAGE + CONTROL "Slider1",IDC_SLIDER_SPEED,"msctls_trackbar32",TBS_BOTH | + TBS_NOTICKS | WS_TABSTOP,96,137,140,12 + CTEXT "Static",IDC_TEXT_SPEED,240,137,24,12,SS_CENTERIMAGE, + WS_EX_STATICEDGE + RTEXT "Rotazione:",IDC_STATIC,24,156,68,12,SS_CENTERIMAGE + COMBOBOX IDC_COMBO_ROTATION,100,156,80,60,CBS_DROPDOWNLIST | + WS_TABSTOP + CONTROL "",IDC_IMAGE_COSMOS,"Static",SS_BITMAP | SS_CENTERIMAGE, + 4,4,284,92 + GROUPBOX "Avanzate",IDC_STATIC,16,180,260,72 + CONTROL "Attiva blending sullo sfondo",IDC_CHECK_DOBLENDING, + "Button",BS_AUTOCHECKBOX | WS_TABSTOP,24,196,102,10 + CONTROL "Attiva correzione prospettica accurata", + IDC_CHECK_PERSPECTIVE,"Button",BS_AUTOCHECKBOX | + WS_TABSTOP,24,208,135,10 + CONTROL "Attiva filtraggio delle texture",IDC_CHECK_FILTERING, + "Button",BS_AUTOCHECKBOX | WS_TABSTOP,24,220,110,10 + CONTROL "Attiva illuminazione accurata",IDC_CHECK_SHADING,"Button", + BS_AUTOCHECKBOX | WS_TABSTOP,24,232,110,10 + PUSHBUTTON "OK",IDOK,60,260,52,16 + PUSHBUTTON "Annulla",IDCANCEL,120,260,52,16 + PUSHBUTTON "Info",IDC_BUTTON_ABOUT,179,260,52,16 +END + +// String Tables + +STRINGTABLE DISCARDABLE +BEGIN + IDS_DESCRIPTION "Campo stellare" + IDS_ROTATION_NONE "Nessuna" + IDS_ROTATION_LINEAR "Lineare" + IDS_ROTATION_PERIODIC "Periodica" + IDS_LICENSE "Campo stellare e` software libero rilasciato sotto licenza GNU GPL." + IDS_AUTHOR "Scritto da Carlo Bramini" +END
Propchange: trunk/rosapps/applications/screensavers/ssstars/lang/it-IT.rc ------------------------------------------------------------------------------ svn:eol-style = native
Added: trunk/rosapps/applications/screensavers/ssstars/lang/pl-PL.rc URL: http://svn.reactos.org/svn/reactos/trunk/rosapps/applications/screensavers/s... ============================================================================== --- trunk/rosapps/applications/screensavers/ssstars/lang/pl-PL.rc (added) +++ trunk/rosapps/applications/screensavers/ssstars/lang/pl-PL.rc [iso-8859-1] Sat Oct 1 21:28:47 2011 @@ -1,0 +1,52 @@ +LANGUAGE LANG_POLISH, SUBLANG_NEUTRAL + +// Dialog + +DLG_SCRNSAVECONFIGURE DIALOGEX 0, 0, 292, 282 +STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION +CAPTION "Ustawienia" +FONT 8, "MS Shell Dlg" +BEGIN + GROUPBOX "Opcje",IDC_STATIC,16,100,260,76 + RTEXT "Liczba gwiazd:",IDC_STATIC,24,116,68,12, + SS_CENTERIMAGE + CONTROL "Slider1",IDC_SLIDER_NUM_OF_STARS,"msctls_trackbar32", + TBS_BOTH | TBS_NOTICKS | WS_TABSTOP,96,116,140,12 + CTEXT "Static",IDC_TEXT_NUM_OF_STARS,240,116,24,12, + SS_CENTERIMAGE,WS_EX_STATICEDGE + RTEXT "SzybkoÅÄ:",IDC_STATIC,24,137,68,12,SS_CENTERIMAGE + CONTROL "Slider1",IDC_SLIDER_SPEED,"msctls_trackbar32",TBS_BOTH | + TBS_NOTICKS | WS_TABSTOP,96,137,140,12 + CTEXT "Static",IDC_TEXT_SPEED,240,137,24,12,SS_CENTERIMAGE, + WS_EX_STATICEDGE + RTEXT "Obroty:",IDC_STATIC,24,156,68,12,SS_CENTERIMAGE + COMBOBOX IDC_COMBO_ROTATION,100,156,80,60,CBS_DROPDOWNLIST | + WS_TABSTOP + CONTROL "",IDC_IMAGE_COSMOS,"Static",SS_BITMAP | SS_CENTERIMAGE, + 4,4,284,92 + GROUPBOX "Advanced",IDC_STATIC,16,180,260,72 + CONTROL "Enable background blending",IDC_CHECK_DOBLENDING, + "Button",BS_AUTOCHECKBOX | WS_TABSTOP,24,196,110,10 + CONTROL "Enable accurate perspective correction", + IDC_CHECK_PERSPECTIVE,"Button",BS_AUTOCHECKBOX | + WS_TABSTOP,24,208,142,10 + CONTROL "Enable texture filtering",IDC_CHECK_FILTERING, + "Button",BS_AUTOCHECKBOX | WS_TABSTOP,24,220,90,10 + CONTROL "Enable smooth shading",IDC_CHECK_SHADING,"Button", + BS_AUTOCHECKBOX | WS_TABSTOP,24,232,100,10 + PUSHBUTTON "OK",IDOK,60,260,52,16 + PUSHBUTTON "Anuluj",IDCANCEL,120,260,52,16 + PUSHBUTTON "O wygaszaczu",IDC_BUTTON_ABOUT,179,260,52,16 +END + +// String Tables + +STRINGTABLE DISCARDABLE +BEGIN + IDS_DESCRIPTION "Gwiezdne pole" + IDS_ROTATION_NONE "brak" + IDS_ROTATION_LINEAR "Liniowo" + IDS_ROTATION_PERIODIC "Okresowo" + IDS_LICENSE "Gwiezdne pole to darmowe oprogramowanie wydane na licencji GNU GPL." + IDS_AUTHOR "Napisane przez Carlo Bramini" +END
Propchange: trunk/rosapps/applications/screensavers/ssstars/lang/pl-PL.rc ------------------------------------------------------------------------------ svn:eol-style = native
Added: trunk/rosapps/applications/screensavers/ssstars/lang/ru-RU.rc URL: http://svn.reactos.org/svn/reactos/trunk/rosapps/applications/screensavers/s... ============================================================================== --- trunk/rosapps/applications/screensavers/ssstars/lang/ru-RU.rc (added) +++ trunk/rosapps/applications/screensavers/ssstars/lang/ru-RU.rc [iso-8859-1] Sat Oct 1 21:28:47 2011 @@ -1,0 +1,52 @@ +LANGUAGE LANG_RUSSIAN, SUBLANG_NEUTRAL + +// Dialog + +DLG_SCRNSAVECONFIGURE DIALOGEX 0, 0, 292, 282 +STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION +CAPTION "Ïàðàìåòðû çàñòàâêè" +FONT 8, "MS Shell Dlg" +BEGIN + GROUPBOX "Íàñòðîéêè",IDC_STATIC,16,100,260,76 + RTEXT "Êîëè÷åñòâî çâ¸çä:",IDC_STATIC,24,116,68,12, + SS_CENTERIMAGE + CONTROL "Slider1",IDC_SLIDER_NUM_OF_STARS,"msctls_trackbar32", + TBS_BOTH | TBS_NOTICKS | WS_TABSTOP,96,116,140,12 + CTEXT "Static",IDC_TEXT_NUM_OF_STARS,240,116,24,12, + SS_CENTERIMAGE,WS_EX_STATICEDGE + RTEXT "Ñêîðîñòü:",IDC_STATIC,24,137,68,12,SS_CENTERIMAGE + CONTROL "Slider1",IDC_SLIDER_SPEED,"msctls_trackbar32",TBS_BOTH | + TBS_NOTICKS | WS_TABSTOP,96,137,140,12 + CTEXT "Static",IDC_TEXT_SPEED,240,137,24,12,SS_CENTERIMAGE, + WS_EX_STATICEDGE + RTEXT "Âðàùåíèå:",IDC_STATIC,24,156,68,12,SS_CENTERIMAGE + COMBOBOX IDC_COMBO_ROTATION,100,156,80,60,CBS_DROPDOWNLIST | + WS_TABSTOP + CONTROL "",IDC_IMAGE_COSMOS,"Static",SS_BITMAP | SS_CENTERIMAGE, + 4,4,284,92 + GROUPBOX "Advanced",IDC_STATIC,16,180,260,72 + CONTROL "Enable background blending",IDC_CHECK_DOBLENDING, + "Button",BS_AUTOCHECKBOX | WS_TABSTOP,24,196,110,10 + CONTROL "Enable accurate perspective correction", + IDC_CHECK_PERSPECTIVE,"Button",BS_AUTOCHECKBOX | + WS_TABSTOP,24,208,142,10 + CONTROL "Enable texture filtering",IDC_CHECK_FILTERING, + "Button",BS_AUTOCHECKBOX | WS_TABSTOP,24,220,90,10 + CONTROL "Enable smooth shading",IDC_CHECK_SHADING,"Button", + BS_AUTOCHECKBOX | WS_TABSTOP,24,232,100,10 + PUSHBUTTON "OK",IDOK,60,260,52,16 + PUSHBUTTON "Îòìåíà",IDCANCEL,120,260,52,16 + PUSHBUTTON "Î ïðîãðàììå",IDC_BUTTON_ABOUT,179,260,52,16 +END + +// String Tables + +STRINGTABLE DISCARDABLE +BEGIN + IDS_DESCRIPTION "Çâ¸çäíîå ïîëå" + IDS_ROTATION_NONE "Îòñóòñòâóåò" + IDS_ROTATION_LINEAR "Ëèíåéíîå" + IDS_ROTATION_PERIODIC "Ïåðèîäè÷åñêîå" + IDS_LICENSE "Çâ¸çäíîå ïîëå - ýòî ñâîáîäíîå ÏÎ, ðàñïðîñòðàíÿåìîå ïîä ëèöåíçèåé GNU GPL." + IDS_AUTHOR "Çàñòàâêó ñîçäàë Carlo Bramini" +END
Propchange: trunk/rosapps/applications/screensavers/ssstars/lang/ru-RU.rc ------------------------------------------------------------------------------ svn:eol-style = native
Added: trunk/rosapps/applications/screensavers/ssstars/makefile URL: http://svn.reactos.org/svn/reactos/trunk/rosapps/applications/screensavers/s... ============================================================================== --- trunk/rosapps/applications/screensavers/ssstars/makefile (added) +++ trunk/rosapps/applications/screensavers/ssstars/makefile [iso-8859-1] Sat Oct 1 21:28:47 2011 @@ -1,0 +1,79 @@ +# Makefile for Starfield screensaver +# +# syntax: +# make <platform> <unicode> +# +# parameters: +# <platform> +# x68_64=1 : compile for x86_64 +# undefined: use default tools (typically IA_32) +# <unicode> +# unicode=1: compile as UNICODE application +# undefined: compile as ASCII application + +# Makefile for Starfield screensaver + +# Default tools +TOOL_PREFIX= + +ifdef x86-64 +TOOL_PREFIX=x86_64-pc-mingw32- +endif + +CPP = $(TOOL_PREFIX)g++.exe +CC = $(TOOL_PREFIX)gcc.exe +WINDRES = $(TOOL_PREFIX)windres.exe + +# Define some variables +INCLUDE = +DEBUG = -Wall +OPTIMIZE = -O2 -fomit-frame-pointer + +ifdef x86-64 +# nothing here +else +OPTIMIZE+= -mpreferred-stack-boundary=2 +endif + +# Strip, typical mingw flag, help library +LIBS = -lopengl32 -lglu32 -lscrnsave -lcomctl32 -s -mwindows + +# Base files +FILES = stars settings + +# Check the UNICODE support +ifeq ($(unicode), 1) +UNICODE=u +DEFS += -DUNICODE -D_UNICODE +else +UNICODE=a +endif + +CFLAGS = $(DEFS) $(INCLUDE) $(DEBUG) $(OPTIMIZE) + +DIR_OBJECTS = obj/$(TOOL_PREFIX)$(UNICODE)/ + +# target file name +TARGET = $(DIR_OBJECTS)ssstars.scr + +OBJS= $(addprefix $(DIR_OBJECTS), $(addsuffix .o, $(FILES))) +RES = $(DIR_OBJECTS)resource.res + +.PHONY: all all-before all-after clean clean-custom + +all: all-before $(TARGET) all-after + +clean: clean-custom + $(RM) $(OBJ) $(TARGET) + +$(TARGET): $(OBJS) $(RES) + $(CC) $^ -o $@ $(LIBS) + +$(DIR_OBJECTS)%.o: %.c $(DIR_OBJECTS) + $(CC) -c $< -o $@ $(CFLAGS) + +$(RES): resource.rc + $(WINDRES) -i $< --input-format=rc -o $@ -O coff + +$(DIR_OBJECTS): + -mkdir $@
Propchange: trunk/rosapps/applications/screensavers/ssstars/makefile ------------------------------------------------------------------------------ svn:eol-style = native
Propchange: trunk/rosapps/applications/screensavers/ssstars/res/ ------------------------------------------------------------------------------ --- bugtraq:logregex (added) +++ bugtraq:logregex Sat Oct 1 21:28:47 2011 @@ -1,0 +1,2 @@ +([Ii]ssue|[Bb]ug)s? #?(\d+)(,? ?#?(\d+))*(,? ?(and |or )?#?(\d+))? +(\d+)
Propchange: trunk/rosapps/applications/screensavers/ssstars/res/ ------------------------------------------------------------------------------ bugtraq:message = See issue #%BUGID% for more details.
Propchange: trunk/rosapps/applications/screensavers/ssstars/res/ ------------------------------------------------------------------------------ bugtraq:url = http://www.reactos.org/bugzilla/show_bug.cgi?id=%BUGID%
Added: trunk/rosapps/applications/screensavers/ssstars/res/cosmicfractal.bmp URL: http://svn.reactos.org/svn/reactos/trunk/rosapps/applications/screensavers/s... ============================================================================== Binary file - no diff available.
Propchange: trunk/rosapps/applications/screensavers/ssstars/res/cosmicfractal.bmp ------------------------------------------------------------------------------ svn:mime-type = application/octet-stream
Added: trunk/rosapps/applications/screensavers/ssstars/res/icon_stars.ico URL: http://svn.reactos.org/svn/reactos/trunk/rosapps/applications/screensavers/s... ============================================================================== Binary file - no diff available.
Propchange: trunk/rosapps/applications/screensavers/ssstars/res/icon_stars.ico ------------------------------------------------------------------------------ svn:mime-type = application/octet-stream
Added: trunk/rosapps/applications/screensavers/ssstars/res/star.bmp URL: http://svn.reactos.org/svn/reactos/trunk/rosapps/applications/screensavers/s... ============================================================================== Binary file - no diff available.
Propchange: trunk/rosapps/applications/screensavers/ssstars/res/star.bmp ------------------------------------------------------------------------------ svn:mime-type = application/octet-stream
Added: trunk/rosapps/applications/screensavers/ssstars/resource.h URL: http://svn.reactos.org/svn/reactos/trunk/rosapps/applications/screensavers/s... ============================================================================== --- trunk/rosapps/applications/screensavers/ssstars/resource.h (added) +++ trunk/rosapps/applications/screensavers/ssstars/resource.h [iso-8859-1] Sat Oct 1 21:28:47 2011 @@ -1,0 +1,25 @@ +#define IDS_DESCRIPTION 1 +#define IDS_ROTATION_NONE 2 +#define IDS_ROTATION_LINEAR 3 +#define IDS_ROTATION_PERIODIC 4 + +#define IDS_LICENSE 5 +#define IDS_AUTHOR 6 + +#define IDI_STARFIELD 101 + +#define IDB_COSMOS 102 +#define IDB_STAR 103 + +#define IDC_SLIDER_NUM_OF_STARS 1000 +#define IDC_SLIDER_SPEED 1001 +#define IDC_TEXT_NUM_OF_STARS 1002 +#define IDC_TEXT_SPEED 1003 +#define IDC_COMBO_ROTATION 1004 +#define IDC_IMAGE_COSMOS 1005 +#define IDC_BUTTON_ABOUT 1006 + +#define IDC_CHECK_DOBLENDING 1007 +#define IDC_CHECK_PERSPECTIVE 1008 +#define IDC_CHECK_FILTERING 1009 +#define IDC_CHECK_SHADING 1010
Propchange: trunk/rosapps/applications/screensavers/ssstars/resource.h ------------------------------------------------------------------------------ svn:eol-style = native
Added: trunk/rosapps/applications/screensavers/ssstars/resource.rc URL: http://svn.reactos.org/svn/reactos/trunk/rosapps/applications/screensavers/s... ============================================================================== --- trunk/rosapps/applications/screensavers/ssstars/resource.rc (added) +++ trunk/rosapps/applications/screensavers/ssstars/resource.rc [iso-8859-1] Sat Oct 1 21:28:47 2011 @@ -1,0 +1,55 @@ +/* + * ReactOS Starfield (global resource file) + * + * Copyright 2011, Carlo Bramini + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#include <windows.h> +#include <scrnsave.h> + +#include "resource.h" + +#ifndef IDC_STATIC +#define IDC_STATIC -1 +#endif + +#ifndef DS_SHELLFONT +#define DS_SHELLFONT DS_SETFONT|DS_FIXEDSYS +#endif + +// Common resources + +LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL + +// Icons +IDI_STARFIELD ICON DISCARDABLE "res/icon_stars.ico" + +// Bitmap + +IDB_COSMOS BITMAP DISCARDABLE "res/cosmicfractal.bmp" +IDB_STAR BITMAP DISCARDABLE "res/star.bmp" + + +// Language resources +#include "lang/en-US.rc" +#include "lang/it-IT.rc" +#include "lang/ru-RU.rc" + +// UTF-8 +#pragma code_page(65001) + +#include "lang/pl-PL.rc"
Propchange: trunk/rosapps/applications/screensavers/ssstars/resource.rc ------------------------------------------------------------------------------ svn:eol-style = native
Added: trunk/rosapps/applications/screensavers/ssstars/settings.c URL: http://svn.reactos.org/svn/reactos/trunk/rosapps/applications/screensavers/s... ============================================================================== --- trunk/rosapps/applications/screensavers/ssstars/settings.c (added) +++ trunk/rosapps/applications/screensavers/ssstars/settings.c [iso-8859-1] Sat Oct 1 21:28:47 2011 @@ -1,0 +1,335 @@ +/* + * Star field screensaver + * + * Copyright 2011 Carlo Bramini + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#define WIN32_LEAN_AND_MEAN +#include <windows.h> +#include <tchar.h> +#include <commctrl.h> +#include <shellapi.h> + +#include "resource.h" +#include "settings.h" + +#define SIZEOF(_v) (sizeof(_v) / sizeof(*_v)) + +// Options for the starfield +SSSTARS Settings; + +// Factory default settings. +static const SSSTARS FactoryDefaults = { + MAX_STARS, + 20, + ROTATION_PERIODIC, + + TRUE, + TRUE, + TRUE, + TRUE +}; + +static const DWORD RotoStrings[] = { + IDS_ROTATION_NONE, + IDS_ROTATION_LINEAR, + IDS_ROTATION_PERIODIC +}; + +static DWORD QueryDWORD(HKEY hKey, LPCTSTR pszValueName, DWORD Default) +{ + DWORD dwData, dwType, cbData; + LONG lRes; + + dwType = REG_DWORD; + cbData = sizeof(DWORD); + + lRes = RegQueryValueEx( + hKey, + pszValueName, + NULL, + &dwType, + (LPBYTE)&dwData, + &cbData); + + if (lRes != ERROR_SUCCESS || dwType != REG_DWORD) + return Default; + + return dwData; +} + +static void SaveDWORD(HKEY hKey, LPCTSTR pszValueName, DWORD dwValue) +{ + RegSetValueEx(hKey, pszValueName, 0, REG_DWORD, (LPBYTE)&dwValue, sizeof(dwValue)); +} + + +void LoadSettings(void) +{ + HKEY hKey; + LONG lRes; + + Settings = FactoryDefaults; + + lRes = RegCreateKeyEx( + HKEY_CURRENT_USER, + _T("Software\Microsoft\ScreenSavers\Ssstars"), + 0, + _T(""), + 0, + KEY_READ, + NULL, + &hKey, + NULL); + + if (lRes != ERROR_SUCCESS) + return; + + Settings.uiNumStars = QueryDWORD(hKey, _T("NumberOfStars"), Settings.uiNumStars); + Settings.uiSpeed = QueryDWORD(hKey, _T("Speed"), Settings.uiSpeed); + Settings.uiRotation = QueryDWORD(hKey, _T("TypeOfRotation"), Settings.uiRotation); + + Settings.bDoBlending = QueryDWORD(hKey, _T("DoBlending"), Settings.bDoBlending); + Settings.bFinePerspective = QueryDWORD(hKey, _T("FinePerspective"), Settings.bFinePerspective); + Settings.bEnableFiltering = QueryDWORD(hKey, _T("EnableFiltering"), Settings.bEnableFiltering); + Settings.bSmoothShading = QueryDWORD(hKey, _T("SmoothShading"), Settings.bSmoothShading); + + // Check the number of stars to be in range + if (Settings.uiNumStars < MIN_STARS) + Settings.uiNumStars = MIN_STARS; + else + if (Settings.uiNumStars > MAX_STARS) + Settings.uiNumStars = MAX_STARS; + + // Check the speed to be in range + if (Settings.uiSpeed < MIN_SPEED) + Settings.uiSpeed = MIN_SPEED; + else + if (Settings.uiSpeed > MAX_SPEED) + Settings.uiSpeed = MAX_SPEED; + + // Check type of rotation to be in range + if (Settings.uiRotation != ROTATION_NONE && + Settings.uiRotation != ROTATION_LINEAR && + Settings.uiRotation != ROTATION_PERIODIC) + Settings.uiRotation = ROTATION_PERIODIC; + + RegCloseKey(hKey); +} + +void SaveSettings(void) +{ + HKEY hKey; + LONG lRes; + + lRes = RegCreateKeyEx( + HKEY_CURRENT_USER, + _T("Software\Microsoft\ScreenSavers\Ssstars"), + 0, + _T(""), + 0, + KEY_WRITE, + NULL, + &hKey, + NULL); + + if (lRes != ERROR_SUCCESS) + return; + + SaveDWORD(hKey, _T("NumberOfStars"), Settings.uiNumStars); + SaveDWORD(hKey, _T("Speed"), Settings.uiSpeed); + SaveDWORD(hKey, _T("TypeOfRotation"), Settings.uiRotation); + + SaveDWORD(hKey, _T("DoBlending"), Settings.bDoBlending); + SaveDWORD(hKey, _T("FinePerspective"), Settings.bFinePerspective); + SaveDWORD(hKey, _T("EnableFiltering"), Settings.bEnableFiltering); + SaveDWORD(hKey, _T("SmoothShading"), Settings.bSmoothShading); + + RegCloseKey(hKey); +} + +static void SetupControls(HWND hWnd) +{ + TCHAR Strings[256]; + HINSTANCE hInstance; + UINT x, gap; + LOGFONT lf; + HFONT hFont; + HBITMAP hCosmos; + HDC hDC, hMemDC; + HGDIOBJ hOldBmp, hOldFnt; + SIZE sizeReactOS; + SIZE sizeStarfield; + BITMAP bm; + + hInstance = (HINSTANCE)GetWindowLong(hWnd, GWL_HINSTANCE); + + SendDlgItemMessage(hWnd, IDC_SLIDER_NUM_OF_STARS, TBM_SETRANGE, FALSE, MAKELPARAM(MIN_STARS, MAX_STARS)); + + SendDlgItemMessage(hWnd, IDC_SLIDER_SPEED, TBM_SETRANGE, FALSE, MAKELPARAM(1, 100)); + + for (x = 0; x < ROTATION_ITEMS; x++) + { + LoadString(hInstance, RotoStrings[x], Strings, sizeof(Strings)/sizeof(TCHAR)); + SendDlgItemMessage(hWnd, IDC_COMBO_ROTATION, CB_ADDSTRING, 0, (LPARAM)Strings); + } + + hCosmos = LoadImage(hInstance, MAKEINTRESOURCE(IDB_COSMOS), IMAGE_BITMAP, 0, 0, LR_CREATEDIBSECTION | LR_DEFAULTSIZE); + + hDC = GetDC(hWnd); + hMemDC = CreateCompatibleDC(hDC); + + // Create the font for the title + ZeroMemory(&lf, sizeof(lf)); + + lf.lfWeight = FW_THIN; + lf.lfCharSet = ANSI_CHARSET; + lf.lfQuality = PROOF_QUALITY; + lf.lfHeight = 36; + _tcscpy(lf.lfFaceName, _T("Tahoma")); + + hFont = CreateFontIndirect(&lf); + + hOldBmp = SelectObject(hMemDC, hCosmos); + hOldFnt = SelectObject(hMemDC, hFont); + + SetBkMode(hMemDC, TRANSPARENT); + SetTextColor(hMemDC, RGB(0xFF, 0xFF, 0xFF)); + + x = LoadString(hInstance, IDS_DESCRIPTION, Strings, sizeof(Strings)/sizeof(TCHAR)); + + GetTextExtentPoint32(hMemDC, _T("ReactOS"), 7, &sizeReactOS); + GetTextExtentPoint32(hMemDC, Strings, x, &sizeStarfield); + + GetObject(hCosmos, sizeof(BITMAP), &bm); + + gap = bm.bmHeight - sizeReactOS.cy - sizeStarfield.cy; + + TextOut(hMemDC, 16, gap * 2 / 5, _T("ReactOS"), 7); + TextOut(hMemDC, 16, gap * 3 / 5 + sizeReactOS.cy, Strings, x); + + SelectObject(hMemDC, hOldBmp); + SelectObject(hMemDC, hOldFnt); + + DeleteObject(hFont); + + DeleteDC(hMemDC); + ReleaseDC(hWnd, hDC); + + SendDlgItemMessage(hWnd, IDC_IMAGE_COSMOS, STM_SETIMAGE, IMAGE_BITMAP, (LPARAM)hCosmos); +} + +static void ApplySettings(HWND hWnd) +{ + SendDlgItemMessage(hWnd, IDC_SLIDER_NUM_OF_STARS, TBM_SETPOS, TRUE, Settings.uiNumStars); + SetDlgItemInt(hWnd, IDC_TEXT_NUM_OF_STARS, Settings.uiNumStars, FALSE); + + SendDlgItemMessage(hWnd, IDC_SLIDER_SPEED, TBM_SETPOS, TRUE, Settings.uiSpeed); + SetDlgItemInt(hWnd, IDC_TEXT_SPEED, Settings.uiSpeed, FALSE); + + SendDlgItemMessage(hWnd, IDC_COMBO_ROTATION, CB_SETCURSEL, (WPARAM)Settings.uiRotation, 0); + + SendDlgItemMessage(hWnd, IDC_CHECK_DOBLENDING, BM_SETCHECK, (WPARAM)Settings.bDoBlending, 0); + SendDlgItemMessage(hWnd, IDC_CHECK_PERSPECTIVE, BM_SETCHECK, (WPARAM)Settings.bFinePerspective, 0); + SendDlgItemMessage(hWnd, IDC_CHECK_FILTERING, BM_SETCHECK, (WPARAM)Settings.bEnableFiltering, 0); + SendDlgItemMessage(hWnd, IDC_CHECK_SHADING, BM_SETCHECK, (WPARAM)Settings.bSmoothShading, 0); +} + +static void ReadSettings(HWND hWnd) +{ + Settings.uiNumStars = SendDlgItemMessage(hWnd, IDC_SLIDER_NUM_OF_STARS, TBM_GETPOS, 0, 0); + SetDlgItemInt(hWnd, IDC_TEXT_NUM_OF_STARS, Settings.uiNumStars, FALSE); + + Settings.uiSpeed = SendDlgItemMessage(hWnd, IDC_SLIDER_SPEED, TBM_GETPOS, 0, 0); + SetDlgItemInt(hWnd, IDC_TEXT_SPEED, Settings.uiSpeed, FALSE); + + Settings.uiRotation = SendDlgItemMessage(hWnd, IDC_COMBO_ROTATION, CB_GETCURSEL, 0, 0); + + Settings.bDoBlending = SendDlgItemMessage(hWnd, IDC_CHECK_DOBLENDING, BM_GETCHECK, 0, 0); + Settings.bFinePerspective = SendDlgItemMessage(hWnd, IDC_CHECK_PERSPECTIVE, BM_GETCHECK, 0, 0); + Settings.bEnableFiltering = SendDlgItemMessage(hWnd, IDC_CHECK_FILTERING, BM_GETCHECK, 0, 0); + Settings.bSmoothShading = SendDlgItemMessage(hWnd, IDC_CHECK_SHADING, BM_GETCHECK, 0, 0); +} + +static BOOL OnCommandAbout(HWND hWnd) +{ + HINSTANCE hInstance; + HICON hIcon; + TCHAR szAppName[256]; + TCHAR szAuthor[256]; + TCHAR szLicense[1024]; + + hInstance = (HINSTANCE)GetWindowLong(hWnd, GWL_HINSTANCE); + + hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_STARFIELD)); + + LoadString(hInstance, IDS_DESCRIPTION, szAppName, SIZEOF(szAppName)); + LoadString(hInstance, IDS_AUTHOR, szAuthor, SIZEOF(szAuthor)); + LoadString(hInstance, IDS_LICENSE, szLicense, SIZEOF(szLicense)); + + _tcscat(szAppName, _T("#")); + _tcscat(szAppName, szAuthor); + + ShellAbout(hWnd, szAppName, szLicense, hIcon); + + return TRUE; +} + +// +// Dialogbox procedure for Configuration window +// +BOOL CALLBACK ScreenSaverConfigureDialog(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) +{ + switch (uMsg) { + case WM_INITDIALOG: + LoadSettings(); + SetupControls(hDlg); + ApplySettings(hDlg); + return TRUE; + + case WM_COMMAND: + switch (LOWORD( wParam )) { + + case IDOK: + // Write configuration + SaveSettings(); + + // Fall down... + case IDCANCEL: + EndDialog( hDlg, LOWORD( wParam )); + return TRUE; + + case IDC_BUTTON_ABOUT: + return OnCommandAbout(hDlg); + } + + case WM_HSCROLL: + ReadSettings(hDlg); + return TRUE; + + } + + return FALSE; +} + +BOOL WINAPI RegisterDialogClasses(HANDLE hInst) +{ + InitCommonControls(); + + return TRUE; +} +
Propchange: trunk/rosapps/applications/screensavers/ssstars/settings.c ------------------------------------------------------------------------------ svn:eol-style = native
Added: trunk/rosapps/applications/screensavers/ssstars/settings.h URL: http://svn.reactos.org/svn/reactos/trunk/rosapps/applications/screensavers/s... ============================================================================== --- trunk/rosapps/applications/screensavers/ssstars/settings.h (added) +++ trunk/rosapps/applications/screensavers/ssstars/settings.h [iso-8859-1] Sat Oct 1 21:28:47 2011 @@ -1,0 +1,50 @@ +/* + * Star field screensaver + * + * Copyright 2011 Carlo Bramini + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef __SETTINGS_H__ +#define __SETTINGS_H__ + +#define ROTATION_NONE 0 +#define ROTATION_LINEAR 1 +#define ROTATION_PERIODIC 2 +#define ROTATION_ITEMS 3 + +#define MIN_STARS 10 +#define MAX_STARS 500 + +#define MIN_SPEED 1 +#define MAX_SPEED 100 + +typedef struct { + DWORD uiNumStars; + DWORD uiSpeed; + DWORD uiRotation; + DWORD bDoBlending; + DWORD bFinePerspective; + DWORD bEnableFiltering; + DWORD bSmoothShading; +} SSSTARS; + +extern SSSTARS Settings; + +void LoadSettings(void); +void SaveSettings(void); + +#endif
Propchange: trunk/rosapps/applications/screensavers/ssstars/settings.h ------------------------------------------------------------------------------ svn:eol-style = native
Added: trunk/rosapps/applications/screensavers/ssstars/ssstars.c URL: http://svn.reactos.org/svn/reactos/trunk/rosapps/applications/screensavers/s... ============================================================================== --- trunk/rosapps/applications/screensavers/ssstars/ssstars.c (added) +++ trunk/rosapps/applications/screensavers/ssstars/ssstars.c [iso-8859-1] Sat Oct 1 21:28:47 2011 @@ -1,0 +1,636 @@ +/* + * Star field screensaver + * + * Copyright 2011 Carlo Bramini + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#define WIN32_LEAN_AND_MEAN +#include <windows.h> +#include <tchar.h> +#include <scrnsave.h> + +#include <stdlib.h> +#include <time.h> +#include <math.h> + +#include <gl/gl.h> +#include <gl/glu.h> + +#include "resource.h" +#include "settings.h" + +#define FAR_PLANE -80.0f +#define NEAR_PLANE 3.0f +#define GAP 0.0f +#define FIELD_WIDTH 50.f +#define FIELD_HEIGHT 45.f +#define FIELD_DEPTH (NEAR_PLANE - FAR_PLANE + GAP) + +#define STAR_RED 0.f +#define STAR_GREEN 0.f +#define STAR_BLUE 0.10f +#define STAR_TAIL 0.9f + +typedef struct { + float x1; + float y1; + float x2; + float y2; + float z; +} VERTEX; + +static VERTEX Vertex[MAX_STARS]; +static HGLRC hRC; // Permanent Rendering Context +static HDC hDC; // Private GDI Device Context +static float fAngle; +static GLuint glStarTex; + +// Light position +static GLfloat g_light_position[4] = { + 0.0f, 0.0f, 3.0f, 1.0f +}; + +static PIXELFORMATDESCRIPTOR pfd= // Pixel Format Descriptor +{ + sizeof(PIXELFORMATDESCRIPTOR), // Size Of This Pixel Format Descriptor + 1, // Version Number (?) + PFD_DRAW_TO_WINDOW | // Format Must Support Window + PFD_SUPPORT_OPENGL | // Format Must Support OpenGL + PFD_DOUBLEBUFFER, // Must Support Double Buffering + PFD_TYPE_RGBA, // Request An RGBA Format + 16, // Select A 16Bit Color Depth + 0, 0, 0, 0, 0, 0, // Color Bits Ignored (?) + 0, // No Alpha Buffer + 0, // Shift Bit Ignored (?) + 0, // No Accumulation Buffer + 0, 0, 0, 0, // Accumulation Bits Ignored (?) + 16, // 16Bit Z-Buffer (Depth Buffer) + 0, // No Stencil Buffer + 0, // No Auxiliary Buffer (?) + PFD_MAIN_PLANE, // Main Drawing Layer + 0, // Reserved (?) + 0, 0, 0 // Layer Masks Ignored (?) +}; + +static HBITMAP CreateStarBitmap(HWND hWnd, HDC hDC) +{ + BITMAPINFO bi; + LPBYTE lpBits; + LPBYTE *lppBits; + HBITMAP hTextBmp, hFileBmp; + HDC hTextDC, hFileDC; + HGDIOBJ hOldText, hOldFile; + UINT i; + DWORD *Ptr32; + BITMAP bm; + HINSTANCE hInstance; + + // Get instance for loading the texture + hInstance = (HINSTANCE)GetWindowLong(hWnd, GWL_HINSTANCE); + + // Load the texture + hFileBmp = (HBITMAP) + LoadImage( + hInstance, + MAKEINTRESOURCE(IDB_STAR), + IMAGE_BITMAP, + 0, 0, + LR_CREATEDIBSECTION | LR_DEFAULTSIZE + ); + + // Get texture specs + GetObject(hFileBmp, sizeof(BITMAP), &bm); + + // Allocate new 32 bit texture + ZeroMemory(&bi, sizeof(bi)); + + bi.bmiHeader.biSize = sizeof(BITMAPINFOHEADER); + bi.bmiHeader.biWidth = bm.bmWidth; + bi.bmiHeader.biHeight = -bm.bmHeight; + bi.bmiHeader.biPlanes = 1; + bi.bmiHeader.biBitCount = 32; + bi.bmiHeader.biCompression = BI_RGB; + + // Makes GCC happy ;-| + lppBits = &lpBits; + + hTextBmp = CreateDIBSection(hDC, + (BITMAPINFO*)&bi, + DIB_RGB_COLORS, + (void**)lppBits, + NULL, + 0); + + // Save new texture specs +// GetObject(hTextBmp, sizeof(BITMAP), &bmStarTex); +// bmStarTex.bmBits = lpBits; + + // Copy 24 bit texture in 32 texture + hTextDC = CreateCompatibleDC(hDC); + hFileDC = CreateCompatibleDC(hDC); + + hOldText = SelectObject(hTextDC, hTextBmp); + hOldFile = SelectObject(hFileDC, hFileBmp); + + BitBlt(hTextDC, 0, 0, bm.bmWidth, bm.bmHeight, hFileDC, 0, 0, SRCCOPY); + + SelectObject(hTextDC, hOldText); + SelectObject(hFileDC, hOldFile); + + DeleteDC(hTextDC); + DeleteDC(hFileDC); + + // Delete 24 bit texture + DeleteObject(hFileBmp); + + GetObject(hTextBmp, sizeof(BITMAP), &bm); + + // Apply ALPHA channel to new texture + for (Ptr32=(DWORD *)lpBits, i=0; i < (UINT)(bm.bmWidth * bm.bmHeight); i++) + { + DWORD Color = Ptr32[i] & 0x00FFFFFF; + DWORD Alpha = Color & 0xFF; + + Color |= Alpha << 24; + + Ptr32[i] = Color; + } + + return hTextBmp; +} + +static void InitGL(HBITMAP hStarTex) +{ + BITMAP bm; + unsigned int i; + float xp, yp, zp; + + // set the GL clear color - use when the color buffer is cleared + glClearColor(STAR_RED, STAR_GREEN, STAR_BLUE, STAR_TAIL); + + if (Settings.bSmoothShading) + // set the shading model to 'smooth' + glShadeModel( GL_SMOOTH ); + else + // set the shading model to 'flat' + glShadeModel( GL_FLAT ); + + // set GL to render front of polygons + glPolygonMode( GL_FRONT_AND_BACK, GL_FILL ); + // enable depth test + glDisable( GL_DEPTH_TEST ); + + // enable lighting + glEnable( GL_LIGHTING ); + // enable lighting for front + glLightModeli( GL_FRONT, GL_TRUE ); + // material have diffuse and ambient lighting + glColorMaterial( GL_FRONT, GL_AMBIENT_AND_DIFFUSE ); + // enable color + glEnable( GL_COLOR_MATERIAL ); + // enable light 0 + glEnable( GL_LIGHT0 ); + + // set light attenuation + glLightf( GL_LIGHT0, GL_CONSTANT_ATTENUATION, 0.01f); //0.01f ); + glLightf( GL_LIGHT0, GL_LINEAR_ATTENUATION, 0.01f); //0.2f ); + glLightf( GL_LIGHT0, GL_QUADRATIC_ATTENUATION, 0.005f); //0.001f ); + + // clear the color buffer once + glClear( GL_COLOR_BUFFER_BIT ); + + // randomly generate + srand( time( NULL ) ); + + // Initialize *ALL* stars vertexes (not just programmed ones). + for (i = 0; i < MAX_STARS; i++) + { + xp = ( (float) rand() / RAND_MAX - .5f ) * FIELD_WIDTH; + yp = ( (float) rand() / RAND_MAX - .5f ) * FIELD_HEIGHT; + zp = ( (float) rand() / RAND_MAX ) * FIELD_DEPTH + FAR_PLANE; + + Vertex[i].x1 = -1.f + xp; + Vertex[i].y1 = -1.f + yp; + Vertex[i].x2 = 1.f + xp; + Vertex[i].y2 = 1.f + yp; + Vertex[i].z = zp; + } + + glGenTextures(1, &glStarTex); // Create One Texture + + // Create Linear Filtered Texture + glBindTexture(GL_TEXTURE_2D, glStarTex); + + if (Settings.bEnableFiltering) + { + glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR); + glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR); + } else { + glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_NEAREST); + glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_NEAREST); + } + + // Get Texture properties + GetObject(hStarTex, sizeof(BITMAP), &bm); + + // Create texture as a mipmap +#if 0 + glTexImage2D(GL_TEXTURE_2D, 0, 4, bm.bmWidth, bm.bmHeight, 0, GL_RGBA, GL_UNSIGNED_BYTE, bm.bmBits); +#else + gluBuild2DMipmaps(GL_TEXTURE_2D, 4, bm.bmWidth, bm.bmHeight, GL_RGBA, GL_UNSIGNED_BYTE, bm.bmBits); +#endif + + // Disable Texture Mapping (background smoothing) + glDisable(GL_TEXTURE_2D); + + if (Settings.bFinePerspective) + // Really Fast Perspective Calculations + glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_FASTEST); + else + // Really Nice Perspective Calculations + glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST); + + // enable blending + glEnable( GL_BLEND ); +} + +static void +render(void) +{ + unsigned int i; + float fSpin; + float fSpeed; + float xp, yp; + + // Initialize current speed + fSpeed = (float)Settings.uiSpeed / 100.f; + + glEnable(GL_TEXTURE_2D); // Enable Texture Mapping + + glBlendFunc(GL_SRC_ALPHA,GL_ONE); // Set The Blending Function For Translucency + + switch (Settings.uiRotation) { + case ROTATION_LINEAR: + fAngle += fSpeed; + glRotatef( fAngle, 0.0f, 0.0f, 1.0f ); + break; + + case ROTATION_PERIODIC: + fAngle += fSpeed / 75.f; + fSpin = (float)(50. * cos(fAngle)); + glRotatef( fSpin, 0.0f, 0.0f, 1.0f ); + break; + } + + glColor3ub(255, 255, 255); + + glBegin(GL_QUADS); // Begin Drawing The Textured Quad + + // Draw the stars + for (i = 0; i < Settings.uiNumStars; i++) + { + glTexCoord2f(0.0f, 0.0f); glVertex3f(Vertex[i].x1, Vertex[i].y1, Vertex[i].z); + glTexCoord2f(1.0f, 0.0f); glVertex3f(Vertex[i].x2, Vertex[i].y1, Vertex[i].z); + glTexCoord2f(1.0f, 1.0f); glVertex3f(Vertex[i].x2, Vertex[i].y2, Vertex[i].z); + glTexCoord2f(0.0f, 1.0f); glVertex3f(Vertex[i].x1, Vertex[i].y2, Vertex[i].z); + + // increment z + Vertex[i].z += fSpeed; + + // check to see if passed view + if( Vertex[i].z > NEAR_PLANE + GAP || + Vertex[i].z < FAR_PLANE ) + { + xp = ( (float) rand() / RAND_MAX - .5f ) * FIELD_WIDTH; + yp = ( (float) rand() / RAND_MAX - .5f ) * FIELD_HEIGHT; + + Vertex[i].x1 = -1.f + xp; + Vertex[i].y1 = -1.f + yp; + Vertex[i].x2 = 1.f + xp; + Vertex[i].y2 = 1.f + yp; + Vertex[i].z = FAR_PLANE; + } + } + + glEnd(); // Done Drawing The Textured Quad + + glDisable(GL_TEXTURE_2D); // Enable Texture Mapping +} + +static LRESULT CALLBACK +OnCreate(HWND hWnd, WPARAM wParam, LPARAM lParam) +{ + GLuint PixelFormat; + HBITMAP hStarTex; + + LoadSettings(); + + // Gets A Device Context For The Window + hDC = GetDC(hWnd); + + // Finds The Closest Match To The Pixel Format We Set Above + PixelFormat = ChoosePixelFormat(hDC, &pfd); + + // No Matching Pixel Format? + if (!PixelFormat) + { + MessageBox(0, _T("Can't Find A Suitable PixelFormat."), _T("Error"),MB_OK | MB_ICONERROR); + + // This Sends A 'Message' Telling The Program To Quit + PostQuitMessage(0); + return 0; + } + + // Can We Set The Pixel Mode? + if (!SetPixelFormat(hDC, PixelFormat, &pfd)) + { + MessageBox(0, _TEXT("Can't Set The PixelFormat."), _T("Error"), MB_OK | MB_ICONERROR); + + // This Sends A 'Message' Telling The Program To Quit + PostQuitMessage(0); + return 0; + } + + // Grab A Rendering Context + hRC = wglCreateContext(hDC); + + // Did We Get One? + if (!hRC) + { + MessageBox(0, _T("Can't Create A GL Rendering Context."), _T("Error"), MB_OK | MB_ICONERROR); + + // This Sends A 'Message' Telling The Program To Quit + PostQuitMessage(0); + return 0; + } + + // Can We Make The RC Active? + if (!wglMakeCurrent(hDC, hRC)) + { + MessageBox(0, _T("Can't Activate GLRC."), _TEXT("Error"), MB_OK | MB_ICONERROR); + + // This Sends A 'Message' Telling The Program To Quit + PostQuitMessage(0); + return 0; + } + + // Load star texture + hStarTex = CreateStarBitmap(hWnd, hDC); + + // Initialize The GL Screen Using Screen Info + InitGL(hStarTex); + + // Delete GDI object for texture + DeleteObject(hStarTex); + + // Update screen every 10ms + SetTimer(hWnd, 1, 10, NULL); + + // Initialize spinning angle + fAngle = 0.f; + + return 0L; +} + +static LRESULT CALLBACK +OnDestroy(HWND hWnd, WPARAM wParam, LPARAM lParam) +{ + // Delete update timer + KillTimer(hWnd, 1); + + // Disable Fullscreen Mode + ChangeDisplaySettings(NULL, 0); + + // Make The DC Current + wglMakeCurrent(hDC, NULL); + + // Kill The RC + wglDeleteContext(hRC); + + // Free The DC + ReleaseDC(hWnd, hDC); + +#ifdef _DEBUG_SSTARS + PostQuitMessage(0); +#endif + + return 0L; +} + +static LRESULT CALLBACK +OnPaint(HWND hWnd, WPARAM wParam, LPARAM lParam) +{ + if (Settings.bDoBlending) + { + glBlendFunc( GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA ); + + // disable lighting + glDisable( GL_LIGHTING ); + + // blend in a polygon + glColor4f(STAR_RED, STAR_GREEN, STAR_BLUE, STAR_TAIL); + + // Restore both model view and projection to identity + glMatrixMode(GL_MODELVIEW); + glPushMatrix(); + glLoadIdentity(); + + glMatrixMode(GL_PROJECTION); + glPushMatrix(); + glLoadIdentity(); + + // Blur the background + glBegin( GL_QUADS ); + glVertex3f( -1.0f, -1.0f, -1.0f ); + glVertex3f( -1.0f, 1.0f, -1.0f ); + glVertex3f( 1.0f, 1.0f, -1.0f ); + glVertex3f( 1.0f, -1.0f, -1.0f ); + glEnd(); + + // Recover previous matrix + glPopMatrix(); + glMatrixMode(GL_MODELVIEW); + glPopMatrix(); + + // enable lighting + glEnable( GL_LIGHTING ); + } else { + glClear(GL_COLOR_BUFFER_BIT); + } + + // save the current matrix state, so transformation will + // not persist across displayFunc calls, since we + // will do a glPopMatrix() at the end of this function + glPushMatrix(); + + // render the scene + render(); + + // restore the matrix state + glPopMatrix(); + + // flush the buffer + glFlush(); + + // swap the double buffer + SwapBuffers(hDC); + + // Clear redraw event + ValidateRect(hWnd, NULL); + + return 0L; +} + +static LRESULT CALLBACK +OnSize(HWND hWnd, WPARAM wParam, LPARAM lParam) +{ + GLsizei w = LOWORD(lParam); + GLsizei h = HIWORD(lParam); + + // map the view port to the entire client area + glViewport(0, 0, w, h); + + // set the matrix mode to projection matrix + glMatrixMode(GL_PROJECTION); + + // load the identity matrix + glLoadIdentity(); + + // set the perspective matrix + gluPerspective( 64.0, (GLdouble) w / (GLdouble)h, .1, 300.0 ); + + // set the matrix mode to the modelview matrix + glMatrixMode(GL_MODELVIEW); + + // load the identity matrix into the modelview matrix + glLoadIdentity(); + + // set the 'camera' + gluLookAt( 0.0, 0.0, 3.0, 0.0, 0.0, 0.0, 0.0, 2.0, 3.0 ); + + // set the position of the light + glLightfv( GL_LIGHT0, GL_POSITION, g_light_position ); + + return 0L; +} + +LRESULT CALLBACK +ScreenSaverProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) +{ + switch (uMsg) { + case WM_CREATE: + return OnCreate(hWnd, wParam, lParam); + + case WM_TIMER: + InvalidateRect(hWnd, NULL, FALSE); + return 0L; + + case WM_DESTROY: + return OnDestroy(hWnd, wParam, lParam); + + case WM_PAINT: + return OnPaint(hWnd, wParam, lParam); + + case WM_SIZE: // Resizing The Screen + return OnSize(hWnd, wParam, lParam); + } + +#ifdef _DEBUG_SSTARS + return DefWindowProc(hWnd, uMsg, wParam, lParam); +#else + return DefScreenSaverProc(hWnd, uMsg, wParam, lParam); +#endif +} + +#ifdef _DEBUG_SSTARS + +ATOM InitApp(HINSTANCE hInstance, LPCTSTR szClassName) +{ + WNDCLASS wc; + + ZeroMemory(&wc, sizeof(wc)); + + wc.style = CS_HREDRAW | CS_VREDRAW; + wc.lpfnWndProc = ScreenSaverProc; + wc.cbClsExtra = 0; + wc.cbWndExtra = 0; + wc.hInstance = hInstance; + wc.hIcon = LoadIcon(NULL, IDI_APPLICATION); + wc.hCursor = LoadCursor(NULL, IDC_ARROW); + wc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH); + wc.lpszMenuName = NULL; + wc.lpszClassName = szClassName; + + return RegisterClass(&wc); +} + +HWND InitInstance(HINSTANCE hInstance, int nCmdShow) +{ + HWND hWnd; + TCHAR szClass[] = _T("CLASS"); + TCHAR szTitle[] = _T("TITLE"); + + InitApp(hInstance, szClass); + + hWnd = CreateWindow( + szClass, + szTitle, + WS_OVERLAPPEDWINDOW, + CW_USEDEFAULT, + CW_USEDEFAULT, + 192*3, //CW_USEDEFAULT, + 108*3, //CW_USEDEFAULT, + NULL, + NULL, + hInstance, + NULL); + + if (hWnd) + { + ShowWindow(hWnd, nCmdShow); + UpdateWindow(hWnd); + } + + return hWnd; +} + +int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd) +{ + MSG msg; + HWND hWnd; + HWND hDlg; + + RegisterDialogClasses(hInstance); + + hWnd = InitInstance(hInstance, nShowCmd); + + hDlg = CreateDialog(hInstance, MAKEINTRESOURCE(DLG_SCRNSAVECONFIGURE), NULL, ScreenSaverConfigureDialog); + ShowWindow(hDlg, SW_SHOW); + UpdateWindow(hDlg); + + for (;;) + { + if (GetMessage(&msg, NULL, 0, 0) <= 0) + break; + + TranslateMessage(&msg); + DispatchMessage(&msg); + } + + return 0; +} +#endif
Propchange: trunk/rosapps/applications/screensavers/ssstars/ssstars.c ------------------------------------------------------------------------------ svn:eol-style = native
Added: trunk/rosapps/applications/screensavers/ssstars/ssstars.rbuild URL: http://svn.reactos.org/svn/reactos/trunk/rosapps/applications/screensavers/s... ============================================================================== --- trunk/rosapps/applications/screensavers/ssstars/ssstars.rbuild (added) +++ trunk/rosapps/applications/screensavers/ssstars/ssstars.rbuild [iso-8859-1] Sat Oct 1 21:28:47 2011 @@ -1,0 +1,19 @@ +<?xml version="1.0"?> +<!DOCTYPE module SYSTEM "../../../../tools/rbuild/project.dtd"> +<module name="ssstars" type="win32scr" installbase="system32" installname="ssstars.scr" unicode="yes"> + <library>scrnsave</library> + <library>chkstk</library> + <library>user32</library> + <library>gdi32</library> + <library>opengl32</library> + <library>glu32</library> + <library>advapi32</library> + <library>comctl32</library> + <library>shell32</library> + + <file>ssstars.c</file> + <file>settings.c</file> + <file>resource.rc</file> + + <metadata description="Starfield screensaver" /> +</module>
Propchange: trunk/rosapps/applications/screensavers/ssstars/ssstars.rbuild ------------------------------------------------------------------------------ svn:eol-style = native