America Online
APPLE II DEVELOPMENT FORUM CONFERENCE LOG
Tuesday, September 11, 1990  10:00 p.m. Eastern Time
Topic:  Apple IIGS Toolbox Programming
Forum Leader:  Dave Sugar  (AFL Dyfet)

AFL Dyfet  Okay, I have a couple of announcements before we begin:
AFL Dyfet  First, neither Matt Deathrage or Dave Lyons will be able to attend
          tonight.
AFL Dyfet  Dave is on vacation somewhere without a computer (*gasp*) and Matt
          has a
AFL Dyfet  special appointment.  Matt may be able to attend later though...
AFL Dyfet  Also, we will be holding the second monthly meeting of the
          Advanced Basic SIG
AFL Dyfet  this Thursday at 11pm, in this very room.
AFL Dyfet  Now we are ready to begin.  Good evening and welcome to the Apple
          II
AFL Dyfet  Development Forum conference.  Tonight our topic is the IIgs
          toolsets.  We will
AFL Dyfet  not be using protocol unless it proves nessisary.  The floor is
          now open for
AFL Dyfet  utter chaos :)
JusLooking Is there any way to have TextEdit show special characters?
AFL Dyfet  It depends what's available in the font your using,
          JusLooking...
JusLooking ...assume shaston
HeadCase   You can always use the option and apple chars, but control keys
          are filtered by TE.
JusLooking .so would you have to write a filter proc to handle them?
HeadCase   You can use TEInsert can handle control keys I think...looking
JusLooking Can you insert page breaks into the TE record and show the break
          on screen
JusLooking ?
HeadCase   HA HA HA
JusLooking Should i assume from that response that TE can only be used to
          make a elementry
JusLooking wordprocessor
JusLooking ?
AFA Gary J My understanding is that the intent of TE is not to provide a
          "wordprocessor",
AFA Gary J but a convenient way of editing multiple lines of text.
AFL Dyfet  TE is exactly what it sounds, text editing...You can do a
          reasonable editor
AFL Dyfet  using it, as demonstrated in Complete Pascal, but that is
          stretching it there:)
HeadCase   You can use TEInsert to insert control chars, but why would you
          want to?
CodeMaster isn't there a file size limitation when using TE?
HeadCase   TE is documented to be able to handle 30,000 chars
CodeMaster right, I thought it was about 32K
JusLooking Has Apple announced any updates to the toolbox, GS/OS, or system
          disk since 502
AFL Dyfet  Just a minor update for use with the DMA SCSI card, Jus...
DAERON1    IS THERE A TOOL THAT WILL LET ME PLOT EACH PIXEL IN THE SUPER
          HIGHRESS SCREEN
CodeMaster you mean to see where each pixel is at in a window? as in to plot
          them?
CodeMaster I mean plot to an output device.
CodeMaster or plot them on the screen?
AFA Gary J Yes, please clarify your question.
JusLooking moveto(y,x); line(y,x,y,x)...or something like that.
DAERON1    NO IF I HAVE DATA TO COLOR EACH PIXEL OF THE SCREEN
AFL Dyfet  You mean like a paint bit map?
DAERON1    YES
CodeMaster do you men to define what each pixels color on the screen ?
CodeMaster opps, men = mean
WTSBrian   Hi everyone
AFL Dyfet  So you wish to take a picture from a paint program and use
          quickdraw to draw
AFL Dyfet  part or all of it in a window?
CodeMaster are you asking this for a window area or the raw screen?
CodeMaster or are you trying to create a pixel paint program?
HeadCase   Is this like a bitmaped character you wish to put on the screen?
DAERON1    YES I HAVE A PROGRAM TO MAKE FRACTAL PICTURES BUT CANN'T GET TO
          SUPER HI
CodeMaster how big is the file?
CodeMaster scratch that!
CodeMaster it doesn't make any difference the size.
CodeMaster the first real question is...
CodeMaster do you wish the image in a window or on the full screen?
CodeMaster multiple choice:
DAERON1    FULL SCREEN
CodeMaster then is the file bigger then 32766?
CodeMaster that is the file size of a full screnn image.
DAERON1    I HAVE EACH ROW SAVEED AS A FILE
CodeMaster if it is bigger, ( I think ) you would need to use a window...
CodeMaster so the user can scroll around to see the whole image.
DAERON1    OK
AFL Dyfet  If you simply wish to reload the image to a screen, you can bypass
          the tools
AFL Dyfet  and directly load the image into screen memory....
CodeMaster right, or store it in a buffer and then move to the screen!
AFL Dyfet  Well, if you have a DMA SCSI card you may wish to load it direct
          :)...
CodeMaster well, true!
DAERON1    OK THAT WOULD BE A DIFFERENT CONF.
CodeMaster have your seen the Star Wars SCCI demo?
AFL Dyfet  I have heard about it...
DAERON1    NO
AFL Dyfet  Haven;t seen it...
CodeMaster I saw it at KC...
CodeMaster they had about 2 minutes of the Empire Strikes Back...
CodeMaster  footage dizitized to a Hard drive...
CodeMaster and was using the new card to play back the film...
CodeMaster in real time!
CodeMaster ofcourse it was in gray scale, But It was GREAT to see!
AFA Gary J Actually, I think it was supposed to be FASTER than real time.
HeadCase   Correction faster than real time 36 frames/sec
AFA Gary J Yes.  (Movies are 24 frames per second)
AFL Dyfet  Okay, do we have any toolbox questions out there for tonight??
WinkieJim  I saw it, it was a little faster that real time...
CodeMaster OK, better then real time! :)
WinkieJim  <---raising hand! :)
CodeMaster it was great non the less!
AFL Dyfet  Go ahead Winkie!
WinkieJim  Ok, I'm attempting to place menus in the info bar of a NDA.
CodeMaster ooo ! :)
WinkieJim  problem one: I can't get them to select or pull down or anything
HeadCase   Are you using taskmasterDA?
WinkieJim  Yes.
AFL Dyfet  Pulldowns in a window status bar? Shades of 'MS Windows' :)
CodeMaster CJ did it in WriteIt!
HeadCase   You want menus like Write-it right?
WinkieJim  Yes.
WinkieJim  Well, so far the demo source has been in pascal and I program in
          ASM...
CodeMaster does any one know if CJ is on AOL?
AFL Dyfet  Hmm...
WinkieJim  I get them to display in the info bar, and I get a 'in info bar'
          from
WinkieJim  taskmasterDA, but a call to MenuSelect doesn't seem to do the
          job.
WinkieJim  (pluw I think TaskmasterDA should handle this already, if I'm not
          mistaken.'
WinkieJim  <---stumped them all :)
CodeMaster yeep :(\
CodeMaster you could always ask CK Kahn how he did it.
AFA Gary J C.K. Haun
CodeMaster I thought that was it, but it didn't look right when I typed it!
          :)
HeadCase   He's gone home
AFA Gary J :)
CodeMaster then drop him a little note.
CodeMaster <---- Question
CodeMaster ( After Jim, though )
WinkieJim  well aparently I'm done :)
AFL Dyfet  I think we're still stumped by Jim :)
AFL Dyfet  GA CM
CodeMaster thanks...
CodeMaster I have code that will let me use 16 colors in 640 mode...
CodeMaster but I want to transfer that info the Color Pattle...
CodeMaster Any ideas.
CodeMaster Well, the book says only 4 colors in 640, but I thought
          different!
AFL Dyfet  You mean with dithering?
CodeMaster right
CodeMaster I would rather use the Pallette then _SetPenPattern
HeadCase   What about setcolortable?
CodeMaster _SetColortable
CodeMaster pass...
CodeMaster tableNumber  - WORD
HeadCase   Is this when you are drawing? and you want to change the pen
          color?
CodeMaster scrTablePtr  - LONG
CodeMaster right, I still can't get the text to use 16 colors.
CodeMaster I know that there is 16 color table, but I really...
CodeMaster don't know how they work! :(
HeadCase   You must set the colors to values like $11-$FF incrementing by
          $11.
CodeMaster but can you use Dithering in the pallette?
AFL Dyfet  You can't really get 16 color text because you need to use 2
          pixels in
AFL Dyfet  dithering....
AFL Dyfet  At best 40, or maybe 55 column text :)
CodeMaster right, thats what I thought...
CodeMaster I'll be happy with the 4 colors of text...
CodeMaster  but I would rather use the palette.
AFL Dyfet  Well, if you only use 4 colors per line of text, you can shift
          pallettes around
AFL Dyfet  for different lines of text.
CodeMaster you mean set each scan line to a new palette?
AFL Dyfet  Yes...
AFL Dyfet  Well, each 8 scan lines (assuming 8 pixel font)
CodeMaster right.
HeadCase   I can use setforecolor to change to any of the 16 640 mode colors
          then use drawstring to drow it
HeadCase   in the correct color, is this what you wanted to do?
CodeMaster but there are only 4 defalut colors in 640, right?
HeadCase   Yes, but with dithering there are 16.
CodeMaster but _SetForeColor wnats a color number...
HeadCase   Look at finders color menu. Those are the 16 standard colors in
          640. I don't know hoe it works...
CodeMaster I thought if I didn't change the palette, I would only get the 4
HeadCase   Give setforecolor a value of 0-$FF incrementing by $11 and  those
          are the valid values for the default
CodeMaster give a value of 0 to 15 * 17?
CodeMaster sorry, I'm not doning this in Asm.
HeadCase   Yeah I guess...
CodeMaster Lets ask Mat! He knows EVERYTHING!
CodeMaster :)
Matt DTS   What's the problem?
AFA Gary J :)
Matt DTS   (other than spelling)
CodeMaster I know he wounldn't resist! :)
CodeMaster right! :)
HeadCase   Say you want darkblue text. Call SetForeColor with 1. Then use
          drawstring with the pointer
CodeMaster Matt: I'm trying to set the palette in 640 with 16 colors.
Matt DTS   "Set the palette" doesn't mean anything.  What are you trying to
          accomplish?
CodeMaster ok,
CodeMaster I have a routine that will let me draw object in 16 colors...
CodeMaster useing _SetPenPattern...
CodeMaster  I give the call a dither table.
CodeMaster very easy, works fine...
CodeMaster but I would rather use a palette to do the same job.
Matt DTS   Define "palette"
CodeMaster the color table were the default colrs are stored.
CodeMaster I thought that was known as the Color Palette.
HeadCase   Color table
Matt DTS   I still don't understand why messing with the color tables is more
          desirable than what you're doing.
CodeMaster BTW Matt, thanks for the help in KC!
CodeMaster I just htought if I could setr the palette, it would be..
CodeMaster  faster to specify colors to use then to..
CodeMaster  keep going to the _SetPenPattern
CodeMaster Am I wrong?
MikeNuzz   Code, you "set the Palette" by using the _SetColorTable call
Matt DTS   Probably.  I think the way you're doing it is probably fine.
CodeMaster Sure, it works, but it just adds time to the program loop to
          keep...
CodeMaster making that call. No big deal really...
CodeMaster  but! :)
CodeMaster I just thought that there might be a better way to do it.
MikeNuzz   If you want to use 16 colors in 640 you MUST use Dithering
Matt DTS   If you have a nice dither table and it works, you've probably got
          the problem licked.
Matt DTS   Give yourself credit.
MikeNuzz   Using a color number just won't work
CodeMaster <-- Credit
CodeMaster One last question, ok?
Matt DTS   I think other people are waiting, so hurry.
CodeMaster ( then I promise to shut up! )
CodeMaster Q: is there a way to know when the user has chosen a NDA from the
          Apple menu?
Matt DTS   TaskMaster returns wInSpecial when the user's picked an NDA, I
          believe.
CodeMaster The TaskMaster does not return that event to the application.
CodeMaster oh,
CodeMaster thanks, Matt, I'll try that.
CodeMaster finished!
CodeMaster thank you gentalmen!
Surak TFF  I have a question about reading from and outputting to LineEdit
          controls in a
Surak TFF  movable NDA (system) window.
Surak TFF  The problem is, I can't get it to work - I want to get a number
          from one LE
Surak TFF  control, and output a base-converted number to the other.
Surak TFF  I have problems reading the string from the control, because I
          know my base
Surak TFF  conversion routines work on their own...
Surak TFF  And output has just been a total failure.
Matt DTS   How are you reading the string from the control?
Surak TFF  Well, I got the handle to the LineEdit record in the CtlData field
          of the
Surak TFF  extended control..
Surak TFF  And then tried to read the string from the LineEdit record.
Surak TFF  I took the leTextHndl (sp) from the LineEdit record and used that
          to get to
Surak TFF  the text.
Matt DTS   With something like textHand := LEGetTextHand(GetCtlTitle);  ?
Surak TFF  At first I tried LEGetTextHand, and that didn't work too well
          either.
Surak TFF  (And, even if I can get the input to work, output is the bigger
          problem :)
Matt DTS   (GetCtlTitle returns the ctlData field of the control record,
          btw.)
Matt DTS   It should work just fine.  You pass what's in the ctlData field to
          an LE routine and it returns the
Matt DTS   text.  There's a routine to do this in DTS Sample Code's
          FakeModalDialog; you can look at it if you
Matt DTS   think it would help.
Surak TFF  OK... But the problem is putting the output in another LineEdit
          box...
Surak TFF  Or, even IN the desk accessory window - when I used QuickDraw's
          SetPort call
Surak TFF  (the text was being drawn outside the window before, and the
          Local/Global coord
Surak TFF  conversion routines didn't seem to be working), it dumped into the
          monitor when
Surak TFF  I ran that routine.
Matt DTS   Perhaps you should post some of the troublesome source here for
          others to look at.
Matt DTS   Dave Lyons did this in a prototype NDA shell and it works fine, so
          it's probably not a toolbox bug.
Surak TFF  Well, if you could just tell me the right method of putting the
          text back out..
Matt DTS   It sounds like you're doing the right thing, but something small
          is probably tripping you up.
Surak TFF  Then I could probably get it to work.
Matt DTS   To get the text, call LEGetText with the leHandle from the ctlData
          field.
Matt DTS   To set the text, pass the text pointer, length and leHandle to
          LESetText.
Surak TFF  LEGetText?
Matt DTS   Make sure the environment is set for drawing (e.g., StartDrawing
          if not in an update routine) since
Matt DTS   LineEdit will draw immediately instead of invalidating parts of
          the window.
Matt DTS   (LEGetTextHand, whatever)
MikeNuzz   Don't you have to redraw the control to show the new text
Matt DTS   No - LineEdit draws immediately
Matt DTS   (otherwise you'd have to redraw on every key to see the results)
Surak TFF  Well, do I have to erase the thing in the box currently first, or
          will LE
Surak TFF  take care of doing that? (what if what's in there before is longer
          than what
Matt DTS   define "thing"
Surak TFF  I am putting in now, is what I'm saying)...
Surak TFF  The text in the box (previous output).
Matt DTS   LineEdit takes care of that.
Surak TFF  OK... That makes it a whole lot simpler... What type of strings do
          I pass to
Surak TFF  LE?
Surak TFF  I know I can't use Pascal Strings. (BIG warning in the Toolbox
          ref..)
Matt DTS   You just pass text, and the length as a separate parameter.
Matt DTS   "types" of strings are just different ways of marking the size.
          LE takes the size as a parameter.
Surak TFF  OK.. I will try that, and if all goes well my NDA will be up on
          America Online
Surak TFF  soon :)
Surak TFF  So I can use the Pascal String, without the length byte.
Matt DTS   Without the length byte.
Surak TFF  OK... Thanks a lot for your help!