[comp.sys.amiga.programmer] wb2.0 screens problem.

Sam_Yee@resbbs.UUCP (Sam Yee) (04/06/91)

I need help in making a custom screen having WB2.0 looks.
I am not a developer(not yet atleast) so I can't get any programming
docs on the new OS.

Here is an excerpt from my program:
---------------------------------------------------------------------
DRIF_NEWLOOK   equ  $00000001
NS_EXTENDED    equ  $1000
AUTOSCROLL     equ  $4000
V_HIRES        equ  $8000
DRI_VERSION    equ  $0001

newscrVars:
     dc.w 0,0       ;left-edge/top-edge
     dc.w 640,200   ;width / height
     dc.w 3         ;bitplanes
     dc.b 0,1       ;detailpen,blockpen
     dc.w V_HIRES   ;viewmode
     dc.w CUSTOM!AUTOSCROLL!NS_EXTENDED ;type
     dc.l 0         ;font
     dc.l scrTitle  ;title
     dc.l 0         ;gadgets
     dc.l 0         ;custombitmap
     dc.l screenTag ;tagitem

screenTag:
     dc.l SA_Pens        ;ti_Tag
     dc.l drawInfo       ;ti_Data

drawInfo:
     dc.w DRI_VERSION    ;dri_Version
     dc.w 10             ;dri_NumPens
     dc.l penArray       ;dri_Pens
     dc.l 0              ;dri_Font
     dc.w 3              ;dri_Depth
     dc.w 640,200        ;dri_ResoltionX, dri_ResolutionY
     dc.l DRIF_NEWLOOK   ;dri_Flags
     ds.b 28             ;dri_longreserved

penArray:
     dc.b 3         ;detailpen
     dc.b 1         ;blockpen
     dc.b 3         ;textpen
     dc.b 2         ;shinepen
     dc.b 1         ;shadowpen
     dc.b 3         ;fillpen
     dc.b 1         ;filltextpen
     dc.b 2         ;backgroundpen
     dc.b 3         ;highlighttextpen
     dc.b 8         ;numdripens(don't know what this does!)
     cnop 0,2
;--------------------------------------------------------------------
I didn't use OpenScreenTagList(), but that shouldn't make a difference
since I set the NS_EXTENDED bit in the "type" field of the newscreen
structure.
My screen palette is the same as the new workbench's.
When screen opened the windows looked uglier than before.
What am I doing wrong?

Thanks in advance...

sam_yee@resbbs.wimsey.bc.ca
sam_yee@cc.sfu.ca

jesup@cbmvax.commodore.com (Randell Jesup) (04/07/91)

In article <Sam_Yee.3288@resbbs.UUCP> Sam_Yee@resbbs.UUCP (Sam Yee) writes:
>Here is an excerpt from my program:

>penArray:
>     dc.b 3         ;detailpen
...
>     dc.b 8         ;numdripens(don't know what this does!)

	Note: I'm pretty sure the pen list must end with ~0 (255).

-- 
Randell Jesup, Keeper of AmigaDos, Commodore Engineering.
{uunet|rutgers}!cbmvax!jesup, jesup@cbmvax.commodore.com  BIX: rjesup  
Disclaimer: Nothing I say is anything other than my personal opinion.
Thus spake the Master Ninjei: "To program a million-line operating system
is easy, to change a man's temperament is more difficult."
(From "The Zen of Programming")  ;-)

peter@cbmvax.commodore.com (Peter Cherna) (04/08/91)

In article <Sam_Yee.3288@resbbs.UUCP> Sam_Yee@resbbs.UUCP (Sam Yee) writes:
>I need help in making a custom screen having WB2.0 looks.
>I am not a developer(not yet atleast) so I can't get any programming
>docs on the new OS.
>newscrVars:

Your NewScreen seems fine.

>screenTag:
>     dc.l SA_Pens        ;ti_Tag
>     dc.l drawInfo       ;ti_Data

No.  SA_Pens takes a pointer to a UWORD array of Pens.  It doesn't
take a pointer to a DrawInfo.
use

	dc.l penArray	; ti_Data for SA_Pens

instead.

Also, every tag list is terminated by TAG_END (which doesn't need a data
item).  So also add

	dc.l TAG_END	; end of tag-list

>drawInfo:

Omit this.  DrawInfo structures are never allocated by the program; they're
always make by Intuition.

>penArray:
>     dc.b 3         ;detailpen

Use dc.w for each pen, since the array is an array of UWORDs.

>     dc.b 8         ;numdripens(don't know what this does!)

No, you don't put the number of pens at the end.  Terminate the array with
~0.

>I didn't use OpenScreenTagList(), but that shouldn't make a difference
>since I set the NS_EXTENDED bit in the "type" field of the newscreen
>structure.

True...

>sam_yee@resbbs.wimsey.bc.ca

     Peter
--
Peter Cherna, Operating Systems Development Group, Commodore-Amiga, Inc.
{uunet|rutgers}!cbmvax!peter    peter@cbmvax.commodore.com
My opinions do not necessarily represent the opinions of my employer.
"If all you have is a hammer, everything looks like a nail."

dillon@overload.Berkeley.CA.US (Matthew Dillon) (04/09/91)

In article <20439@cbmvax.commodore.com> jesup@cbmvax.commodore.com (Randell Jesup) writes:
>In article <Sam_Yee.3288@resbbs.UUCP> Sam_Yee@resbbs.UUCP (Sam Yee) writes:
>>Here is an excerpt from my program:
>
>>penArray:
>>     dc.b 3	      ;detailpen
>...
>>     dc.b 8	      ;numdripens(don't know what this does!)
>
>	Note: I'm pretty sure the pen list must end with ~0 (255).

    Don't forget that you can simply have UWORD pens[] = { ~0 };
    (i.e. no pens in the array) to request intuition give you the
    new-look defaults!

				    -Matt

>--
>Randell Jesup, Keeper of AmigaDos, Commodore Engineering.
>{uunet|rutgers}!cbmvax!jesup, jesup@cbmvax.commodore.com  BIX: rjesup
>Disclaimer: Nothing I say is anything other than my personal opinion.
>Thus spake the Master Ninjei: "To program a million-line operating system
>is easy, to change a man's temperament is more difficult."
>(From "The Zen of Programming")  ;-)

--

    Matthew Dillon	    dillon@Overload.Berkeley.CA.US
    891 Regal Rd.	    uunet.uu.net!overload!dillon
    Berkeley, Ca. 94708
    USA

stefanb@cip-s02.informatik.rwth-aachen.de (Stefan Becker) (04/09/91)

Hi!
The tag SA_Pens defines an array of pens. So it should read:

  UWORD pens[]={0,.....,~0};

  Open..... SA_Pens,pens....);

	Stefan

Mail  : Stefan Becker, Holsteinstrasse 9, D-5100 Aachen  ///    Only
Phone : +49-241-505705   FIDO: 2:242/7.6    Germany     ///  Amiga makes
Domain: stefanb@informatik.rwth-aachen.de           \\\///  it possible..
Bang  : ..mcvax!unido!rwthinf!stefanb                \XX/  -->A3000/25<--