Difference between revisions of "Multi screen support"

(set Environment Variables)
(Eiffel Studio)
Line 27: Line 27:
 
* https://eiffelsoftware.origo.ethz.ch/svn/es/branches/soft-arch/Delivery into C:\Eiffel57\soft-arch\Delivery
 
* https://eiffelsoftware.origo.ethz.ch/svn/es/branches/soft-arch/Delivery into C:\Eiffel57\soft-arch\Delivery
 
* https://eiffelsoftware.origo.ethz.ch/svn/es/branches/soft-arch/free_add_ons into C:\Eiffel57\soft-arch\free_add_ons
 
* https://eiffelsoftware.origo.ethz.ch/svn/es/branches/soft-arch/free_add_ons into C:\Eiffel57\soft-arch\free_add_ons
 +
 +
=== set Environment Variables ===
 +
 +
{{block|set '''PATH'''<nowiki>=</nowiki>C:\Programme\Microsoft.NET\SDK\v2.0\Bin;C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727;C:\Programme\Microsoft Platform SDK\bin;C:\Programme\Microsoft Visual Studio 8\VC\bin;C:\Programme\Microsoft Visual Studio 8\Common7\IDE;C:\Programme\Microsoft Visual Studio 8\VC\vcpackages;C:\Programme\Microsoft Platform SDK\Bin;C:\Programme\Microsoft Visual Studio 8\VC\bin;'''%PATH%''';C:\cygwin\bin}}
 +
 +
{{block|set '''INCLUDE'''<nowiki>=</nowiki>C:\Programme\Microsoft.NET\SDK\v2.0\include;C:\Programme\Microsoft Platform SDK\Include;C:\Programme\Microsoft Platform SDK\Include\crt;C:\Programme\Microsoft Platform SDK\Include\crt\sys;C:\Programme\Microsoft Platform SDK\Include\mfc;C:\Programme\Microsoft Platform SDK\Include\atl;C:\Programme\Microsoft Visual Studio 8\VC\include}}
 +
 +
{{block|set '''LIB'''<nowiki>=</nowiki>C:\Programme\Microsoft.NET\SDK\v2.0\Lib;C:\Programme\Microsoft Platform SDK\Lib;C:\Programme\Microsoft Visual Studio 8\VC\lib;}}
 +
 +
{{block|set '''ISE_EIFFEL'''<nowiki>=</nowiki>C:\Eiffel57\}}
 +
These last Variables I'm not sure are needed...
 +
{{block|set '''EIFFEL_SRC'''<nowiki>=</nowiki>C:\Eiffel57\soft-arch\}}
 +
{{block|set '''ISE_PLATFORM'''<nowiki>=</nowiki>windows}}
 +
{{block|set '''ISE_C_COMPILER'''<nowiki>=</nowiki>msc}}
 +
 +
=== Install needed Applications (see also directories above) ===
 +
* install MS Platform SDK, MS .NET Framework, .NET SDK
 +
* install cygwin
 +
* install Eiffel build
  
 
=== Install Gobo ===
 
=== Install Gobo ===
Line 39: Line 58:
 
</pre>
 
</pre>
  
=== set Environment Variables ===
+
=== Compile Libraries ===
 +
* Preparation:
 +
rename C:\Eiffel57\soft-arch\C\CONFIGS\windows-msc-x86 to 'windows-msc-x86 old'
 +
download [http://origo.ethz.ch/pipermail/es-devel/attachments/20060424/e5afb9a9/windows-msc-x86-2005.obj windows-msc-x86-2005.obj] into C:\Eiffel57\soft-arch\C\CONFIGS\ and rename it to windows-msc-x86
  
{{block|set '''PATH'''<nowiki>=</nowiki>C:\Programme\Microsoft.NET\SDK\v2.0\Bin;C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727;C:\Programme\Microsoft Platform SDK\bin;C:\Programme\Microsoft Visual Studio 8\VC\bin;C:\Programme\Microsoft Visual Studio 8\Common7\IDE;C:\Programme\Microsoft Visual Studio 8\VC\vcpackages;C:\Programme\Microsoft Platform SDK\Bin;C:\Programme\Microsoft Visual Studio 8\VC\bin;'''%PATH%''';C:\cygwin\bin}}
+
* Compilation:
 +
** Compiling run-time
  
{{block|set '''INCLUDE'''<nowiki>=</nowiki>C:\Programme\Microsoft.NET\SDK\v2.0\include;C:\Programme\Microsoft Platform SDK\Include;C:\Programme\Microsoft Platform SDK\Include\crt;C:\Programme\Microsoft Platform SDK\Include\crt\sys;C:\Programme\Microsoft Platform SDK\Include\mfc;C:\Programme\Microsoft Platform SDK\Include\atl;C:\Programme\Microsoft Visual Studio 8\VC\include}}
+
'''DOS'''
 +
<pre>cd %EIFFEL_SRC%/C
 +
configure win32 m</pre>
  
{{block|set '''LIB'''<nowiki>=</nowiki>C:\Programme\Microsoft.NET\SDK\v2.0\Lib;C:\Programme\Microsoft Platform SDK\Lib;C:\Programme\Microsoft Visual Studio 8\VC\lib;}}
+
'''Bash'''
 +
<pre>cd $EIFFEL_SRC/C
 +
./configure.bat win32 m</pre>
 +
If you are using a 64Bit Machine change the win32 to win64
  
{{block|set '''ISE_EIFFEL'''<nowiki>=</nowiki>C:\Eiffel57\}}
+
 
These last Variables I'm not sure are needed...
+
On Windows 32 bits to clean up all the generated files you do:
{{block|set '''EIFFEL_SRC'''<nowiki>=</nowiki>C:\Eiffel57\soft-arch\}}
+
'''DOS'''
{{block|set '''ISE_PLATFORM'''<nowiki>=</nowiki>windows}}
+
<pre>configure clean</pre>
{{block|set '''ISE_C_COMPILER'''<nowiki>=</nowiki>msc}}
+
'''Bash'''
 +
<pre>./configure.bat clean</pre>
 +
 
 +
** Compiling C code from libraries
 +
'''DOS'''
 +
<pre>cd %EIFFEL_SRC%/library/net/Clib
 +
make_msc.bat
 +
cd %EIFFEL_SRC%/library/vision2/Clib
 +
make_msc.bat
 +
cd %EIFFEL_SRC%/library/wel/Clib
 +
make_msc.bat</pre>
 +
'''Bash'''
 +
<pre>cd $EIFFEL_SRC/library/net/Clib
 +
./make_msc.bat
 +
cd $EIFFEL_SRC/library/vision2/Clib
 +
./make_msc.bat
 +
cd $EIFFEL_SRC/library/wel/Clib
 +
./make_msc.bat</pre>
 +
 
 +
** Compiling C code from C_library
 +
'''DOS'''
 +
<pre>cd %EIFFEL_SRC%/C_library/zlib
 +
make_msc.bat
 +
cd %EIFFEL_SRC%/C_library/libpng
 +
make_msc.bat</pre>
 +
'''Bash'''
 +
<pre>cd $EIFFEL_SRC/C_library/zlib
 +
./make_msc.bat
 +
cd $EIFFEL_SRC/C_library/libpng
 +
./make_msc.bat</pre>
 +
 
 +
 
 +
** Compiling C code from compiler
 +
'''DOS'''
 +
<pre>cd %EIFFEL_SRC%/Eiffel/library/cli_writer/Clib
 +
nmake</pre>
 +
'''Bash'''
 +
<pre>cd $EIFFEL_SRC/Eiffel/library/cli_writer/Clib
 +
nmake</pre>
 +
 
 +
 
 +
=== Start Eiffel Studio ===
 +
You should be able now to create a vision2 project and compile it !!!
  
 
=Resources=
 
=Resources=

Revision as of 04:33, 15 June 2006


Overview

The aim of this project is to enhance Vision with a support for multiple screens.

Eiffel Studio

  • I'll give you here a step for step instruction at how I got a vision2 project to work under windows

Download

MS Platform SDK Microsoft .NET Framework Version 2.0 Redistributable Package (x86) .NET 2.0 SDK for x86

How I chose the Directories (just change everywhere I use them adequatly) =

  • C:\Eiffel57\ - Eiffel instal directory
  • C:\Eiffel57\soft-arch\ - svn checkout
  • C:\Program Files\Microsoft.NET\ - Microsoft.NET Framework
  • C:\Program Files\Microsoft Platform SDK\ - Microsoft Platform SDK
  • C:\cygwin\ - Cygwin Installation

needed SVN checkout

set Environment Variables

set PATH=C:\Programme\Microsoft.NET\SDK\v2.0\Bin;C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727;C:\Programme\Microsoft Platform SDK\bin;C:\Programme\Microsoft Visual Studio 8\VC\bin;C:\Programme\Microsoft Visual Studio 8\Common7\IDE;C:\Programme\Microsoft Visual Studio 8\VC\vcpackages;C:\Programme\Microsoft Platform SDK\Bin;C:\Programme\Microsoft Visual Studio 8\VC\bin;%PATH%;C:\cygwin\bin

set INCLUDE=C:\Programme\Microsoft.NET\SDK\v2.0\include;C:\Programme\Microsoft Platform SDK\Include;C:\Programme\Microsoft Platform SDK\Include\crt;C:\Programme\Microsoft Platform SDK\Include\crt\sys;C:\Programme\Microsoft Platform SDK\Include\mfc;C:\Programme\Microsoft Platform SDK\Include\atl;C:\Programme\Microsoft Visual Studio 8\VC\include

set LIB=C:\Programme\Microsoft.NET\SDK\v2.0\Lib;C:\Programme\Microsoft Platform SDK\Lib;C:\Programme\Microsoft Visual Studio 8\VC\lib;

set ISE_EIFFEL=C:\Eiffel57\

These last Variables I'm not sure are needed...

set EIFFEL_SRC=C:\Eiffel57\soft-arch\

set ISE_PLATFORM=windows

set ISE_C_COMPILER=msc

Install needed Applications (see also directories above)

  • install MS Platform SDK, MS .NET Framework, .NET SDK
  • install cygwin
  • install Eiffel build

Install Gobo

DOS

cd %EIFFEL_SRC%\library
tar xvfz %EIFFEL_SRC%\free_add_ons\gobo\gobo_34_win.tgz

Bash

cd $EIFFEL_SRC/library
tar xvzf $EIFFEL_SRC/free_add_ons/gobo/gobo_34_win.tgz

Compile Libraries

  • Preparation:

rename C:\Eiffel57\soft-arch\C\CONFIGS\windows-msc-x86 to 'windows-msc-x86 old' download windows-msc-x86-2005.obj into C:\Eiffel57\soft-arch\C\CONFIGS\ and rename it to windows-msc-x86

  • Compilation:
    • Compiling run-time

DOS

cd %EIFFEL_SRC%/C
configure win32 m

Bash

cd $EIFFEL_SRC/C
./configure.bat win32 m

If you are using a 64Bit Machine change the win32 to win64


On Windows 32 bits to clean up all the generated files you do: DOS

configure clean

Bash

./configure.bat clean
    • Compiling C code from libraries

DOS

cd %EIFFEL_SRC%/library/net/Clib
make_msc.bat
cd %EIFFEL_SRC%/library/vision2/Clib
make_msc.bat
cd %EIFFEL_SRC%/library/wel/Clib
make_msc.bat

Bash

cd $EIFFEL_SRC/library/net/Clib
./make_msc.bat
cd $EIFFEL_SRC/library/vision2/Clib
./make_msc.bat
cd $EIFFEL_SRC/library/wel/Clib
./make_msc.bat
    • Compiling C code from C_library

DOS

cd %EIFFEL_SRC%/C_library/zlib
make_msc.bat
cd %EIFFEL_SRC%/C_library/libpng
make_msc.bat

Bash

cd $EIFFEL_SRC/C_library/zlib
./make_msc.bat
cd $EIFFEL_SRC/C_library/libpng
./make_msc.bat


    • Compiling C code from compiler

DOS

cd %EIFFEL_SRC%/Eiffel/library/cli_writer/Clib
nmake

Bash

cd $EIFFEL_SRC/Eiffel/library/cli_writer/Clib
nmake


Start Eiffel Studio

You should be able now to create a vision2 project and compile it !!!

Resources

  • In order to be able to change the library code you have to delete the 'readonly="True"' in the library tags of the project's acex file


  • Gdk - Resources:
    • class GdkDisplay
    • class GdkScreen


  • WEL - Resources:
    • NONE


  • Win32 API - Resources:
    • look at the platform SDK under 'Win32 API'
    • Wel uses a loopback function to get access to all fonts (it's pretty much the same that we have to do)
      • in the SDK you find the EnumFontFamilies function under 'Graphics Device Interface' -> 'Fonts and Text' -> '... Reference' -> '... Functions'
      • look at %Eiffel%\library\wel\clib\enumfold.c
      • look at class wel_font_family_enumerator - especially at feature cwin_enum_font_families


Implementation

class EV_SCREEN:

  • allscreenslist [EV_MULTISCREEN]
  • primaryscreen : EV_MULTISCREEN

class EV_MULTISCREEN (inherits EV_SCREEN):

  • create class
  • redefine inherited features for mutliscreen as needed

class EV_SCREEN_IMP (inherits EV_SCREEN_I):

  • add multiscreen features as needed

class EV_SCREEN_I:

  • add new deferred features from EV_SCREEN_IMP

class GDK_EXTERNALS:

  • add multiscreen features as needed

Milestones

M1: June 1st

  • needed gdk features
  • decide upon implementation

M2: May ???

  • To be completed by the team

To do

  • Fabio:
    • find needed WEL features (and underlying routines - WIN32 API)
    • create svn-dir (done. see resources)
    • look at Win32API and get dummy prog to work (see resources)


  • Pascal:
    • look at Win32API and get dummy prog to work (see resources)


  • Pawi
    • find out how to do the docu


  • Dario
    • find out how works 'external' (done. works under linux)
    • create Class EV_MULTISCREEN (inherits EV_SCREEN)
    • look at Win32API and get dummy prog to work (see resources)

Team

Everyone interested in this project is welcome to join our mailinglist es-ui@origo.ethz.ch