[#1] gadgety GadTools
Czesc,
chcialem szybko dodac gadgety do okna i troche sie zgubilem.

Struktura NewGadget ma pole ng_Flags i tam mozna wstawic flagi odnosnie lokowania i wyswietlania tekstu.
A co z flagami ktore odpowiadaja za lokowanie gadgeta (realative/true wzgledem dolnej lub prawej krawedzi oraz wzgledna/prawdziwa szerokosc/wysokosc gadgetu). Flagi te posiada struktura Gadget.

Dzieki
[#2] Re: gadgety GadTools

@peceha, post #1

Z tego co wiem gadżetów gadtools nie można lokować w ramce okienka albo względem dolnej lub prawej krawędzi. Tylko intuition lub BOOPSI.
[#3] Re: gadgety GadTools

@Hexmage960, post #2

Dzieki.
[#4] Re: gadgety GadTools

@peceha, post #1

btw. a czemu nie mui? to co piszesz ma działać na A500?
[#5] Re: gadgety GadTools

@michal_zukowski, post #4

Chyba juz nic bo wlasnie sie dowiedzialem w innym watku ze nie ma zadnych informacji jak korzystac z prisma.library - nic nie udostepnili.
Tak wiec pomysl przepadl.
[#6] Re: gadgety GadTools

@peceha, post #5

walcz, tam jest o ile sie nie myle driver MHI wiec możesz sterować przez MHI
[#7] Re: gadgety GadTools

@michal_zukowski, post #6

Juz sie temu przygladam, chyba da rade.
Na aminecie jest archiwum mhi_dev i mysle ze to pomoze.
[#8] Re: gadgety GadTools

@peceha, post #7

Mam male pytanko.
W tej chwili nie kombinuje jak zrobic by to gralo a jedynie przepisuje na blitz-a dolaczony przyklad w C.
Chodzi o to ze jest tam cos czego nigdzie znalezc nie moge - gdzie tego szukac?
Ponizej zamieszcam caly przykladowy kod (z archiwum)
Chodzi mi o :
flushall()

znajduje sie w MAIN LOOP - bodajze 3 lub 4 llinijka pod WHILE
W katalogu z kodem sa jeszce tylko pliki z rozszerzeniem "lnk" i "o".

/************************************************/
/*                                              */
/* MHIplay: A simple example how to play        */
/*          multibuffered data via MHI          */
/*                                              */
/*          Revision 1.0 by Thomas Wenzel       */
/*                                              */
/************************************************/

#include <stdio.h>
#include <exec/libraries.h>
#include <exec/memory.h>
#include <proto/exec.h>
#include <proto/dos.h>
#include <dos/dos.h>

#include <proto/mhi.h>
#include <libraries/mhi.h>


#define NUMBUFS	8
#define BUFSIZE	128*128

static char Version[]="\0$VER: MHIplay 1.0 (30.03.2001)\0";

struct Library *MHIBase;

int main(int argc, char *argv[]) {
	char	PC[5] = "-\\|/";
	ULONG Progress;
	BYTE	MHISignal;
	ULONG	MHIMask, Signals;
	APTR 	MHIHandle;
	BPTR	InFile;
	APTR	Buffer[NUMBUFS];
	ULONG	CurrentLen;
	APTR	CurrentBuffer;
	BOOL	MemOk;
	BOOL	Done;
	ULONG ReturnCode;
	long i;

	ReturnCode=0;
	
	if(argc != 3) {
		printf("Usage: MHIplay <driver> <file>\n");
		return(5);
	}

	if(MHIBase = OpenLibrary(argv[1], 0)) {
		MHISignal = AllocSignal(-1);
		if(MHISignal != -1) {
			MHIMask = 1L << MHISignal;
			if(MHIHandle = MHIAllocDecoder(FindTask(NULL), MHIMask)) {
				printf("\nDriver details:\n");
				printf("Name:    %s\n", MHIQuery(MHIQ_DECODER_NAME));
				printf("Version: %s\n", MHIQuery(MHIQ_DECODER_VERSION));
				printf("Author:  %s\n", MHIQuery(MHIQ_AUTHOR));
				printf("\n");

				/************************/
				/* Allocate all buffers */
				/************************/
				MemOk=TRUE;
				for(i=0; i<NUMBUFS; i++) {
					Buffer[i] = AllocVec(BUFSIZE, MEMF_CLEAR);
					if(!Buffer[i]) MemOk=FALSE;
				}
				if(MemOk) {
					if(InFile=Open(argv[2], MODE_OLDFILE)) {

						Done=FALSE;

						/**************/
						/* Preloading */
						/**************/
						printf("Preloading.\n");
						for(i=0; i<NUMBUFS; i++) {
							if(CurrentLen = Read(InFile, Buffer[i], BUFSIZE)) {
								MHIQueueBuffer(MHIHandle, Buffer[i], CurrentLen);
								if(CurrentLen != BUFSIZE) Done=TRUE;
							}
						}

						/******************/
						/* Playback start */
						/******************/
						printf("Starting playback.\n");
						MHIPlay(MHIHandle);
						Progress=0;

						/*************/
						/* Main loop */
						/*************/
						while(!Done) {
							printf("Playing [%c]\r", PC[Progress]);
							flushall();
							Progress ++;
							if(Progress > 3) Progress=0;

							Signals=Wait(MHIMask | SIGBREAKF_CTRL_C);
							if(Signals & SIGBREAKF_CTRL_C) break;

							if(Signals & MHIMask) {
								/* Reload and queue all empty buffers */
								for(i=0; i<NUMBUFS; i++) {
									if(CurrentBuffer = MHIGetEmpty(MHIHandle)) {
										if(CurrentLen = Read(InFile, CurrentBuffer, BUFSIZE)) {
											MHIQueueBuffer(MHIHandle, CurrentBuffer, CurrentLen);
										}
										if(CurrentLen != BUFSIZE) Done=TRUE;
									}
								}

								/* Restart if needed */
								if(MHIGetStatus(MHIHandle) == MHIF_OUT_OF_DATA) MHIPlay(MHIHandle);
							}
						}

						/*************************************/
						/* Wait for all buffers to run empty */
						/*************************************/
						if(!(Signals & SIGBREAKF_CTRL_C)) {
							printf("EOF reached. Waiting for end of stream.\n");
							while((MHIGetStatus(MHIHandle) == MHIF_PLAYING)) {
								Signals=Wait(MHIMask | SIGBREAKF_CTRL_C);
								if(Signals & SIGBREAKF_CTRL_C) break;
							}
						}

						/*****************/
						/* Playback stop */
						/*****************/
						printf("Stopping playback.\n");
						MHIStop(MHIHandle);
						Close(InFile);
					}
					else {
						printf("Can't open file!\n");
					}
				}
				else {
					printf("Out of memory!\n");
					ReturnCode=5;
				}
				/********************/
				/* Free all buffers */
				/********************/
				for(i=0; i<NUMBUFS; i++) {
					if(Buffer[i]) FreeVec(Buffer[i]);
				}
				MHIFreeDecoder(MHIHandle);
			}
			else {
				printf("Can't allocate decoder!\n");
				ReturnCode=5;
			}
			FreeSignal(MHISignal);
		}
		else {
			printf("No signals available! Crazy man!\n");
			ReturnCode=5;
		}
		CloseLibrary(MHIBase);
	}
	else {
		printf("Can't open MHI driver \"%s\"\n", argv[1]);
	}
	return(ReturnCode);
}
[#9] Re: gadgety GadTools

@peceha, post #8

Wygląda na to, że flushall() opróżnia bufor wyjścia. Dzięki temu komunikat

printf("Playing [%c]\r", PC[Progress]);

zostaje wyświetlony na ekranie.

Ogólnie buforowane wyjście jest dopiero opróżniane (oraz wyświetlane na ekranie) po napotkaniu znaku końca linii \n. Tutaj masz znak \r, który przesuwa kursor do początku linii, ale nie robi nowej linii (tzw. powrót karetki - carriage return).
[#10] Re: gadgety GadTools

@Hexmage960, post #9

Dobra, dzieki.
Czyli najlepiej jak te czesc pomine (tekst w oknie) i tak chodzi mi o to by odegrac mp3 :)
[#11] Re: gadgety GadTools

@peceha, post #1

Za RKM:
"GadTools gadgets may not be made relative sized or relative positioned. This means that the gadget flags GFLG_RELWIDTH, GFLG_RELHEIGHT, GFLG_RELBOTTOM and GFLG_RELRIGHT may not be specified."
[#12] Re: gadgety GadTools

@peceha, post #10

Czyli najlepiej jak te czesc pomine (tekst w oknie) i tak chodzi mi o to by odegrac mp3 :)

Po napisaniu głównej funkcji swojego programu możesz wykorzystać swoje umiejętności i dorobić okienko z GUI, np. wyświetlające ten status odtwarzania w postaci gadżetu.
[#13] Re: gadgety GadTools

@Hexmage960, post #9

Funkcja ta oproznia bufory wszystkich streamow, nie tylko ekranu.
za SASC manual:
"flushall function flushes all level 2 output buffers and returns the number of level 2 files that are open. If an error occurs, the function continues to flush the remaining files and then returns a value of -1.
This function is not available if the _STRICT_ANSI flag has been defined."
[#14] Re: gadgety GadTools

@peceha, post #10

No to czekam, bo mój Player w amosie nie skończony, pamiętam że miałem problem z komunikacją poprzez arexxa
[#15] Re: gadgety GadTools

@QUAD, post #14

Przez port arexx-a nic nie zrobisz bo jest on zaimplementowany tylko w bibliotece ktora nie zostala publicznie wydana (takie mam odczucie bo sam szukalem i szukalem i jedyna wzmianka o tym pochodzi od AmigaKit ze to "juz zostalo dodane" no ale nie wydane).
Kolejna sprawa to to, ze prisma raczej "umarla" wiec na nic wiecej niz MHI liczyc nie mozna - a to raczej ogranicza odtwarzanie do MP2/3 bo MHI to mpeg.

Ostatnia aktualizacja: 12.09.2019 07:45:37 przez peceha
[#16] Re: gadgety GadTools

@peceha, post #15

Sprawdz jakie formaty rozpoznaje i odgrywa PrismaPlay, jak odgrywa cos wiecej niz MP2/MP3, to mozesz go zdeasemblowac i zobaczyc jakie sa odwolania do prisma.library w tym programie.
Na stronie www.PPA.pl, podobnie jak na wielu innych stronach internetowych, wykorzystywane są tzw. cookies (ciasteczka). Służą ona m.in. do tego, aby zalogować się na swoje konto, czy brać udział w ankietach. Ze względu na nowe regulacje prawne jesteśmy zobowiązani do poinformowania Cię o tym w wyraźniejszy niż dotychczas sposób. Dalsze korzystanie z naszej strony bez zmiany ustawień przeglądarki internetowej będzie oznaczać, że zgadzasz się na ich wykorzystywanie.
OK, rozumiem