Login
Username:

Password:

Remember me



Lost Password?

Register now!

Sections

Who's Online
272 user(s) are online (159 user(s) are browsing Forums)

Members: 1
Guests: 271

LiveForIt, more...

Support us!

Headlines

Forum Index


Board index » New posts




Re: New modern Webrowser Quasar
Home away from home
Home away from home


@Georg

I think there i some memory to be saved if AmigaOS had a global font cache, but that's is different angle.. how many programs use the same font.. how many times is duplicated in memory.

(NutsAboutAmiga)

Basilisk II for AmigaOS4
AmigaInputAnywhere
Excalibur
and other tools and apps.
Go to top


Re: New modern Webrowser Quasar
Just popping in
Just popping in


@joergQuote:


I implemented AmigaOS 4.x native font rendering in OWB nearly 20 years ago already and it was at least 10 times faster than using libfreetype2.


I'm not sure what you mean with native font rendering. But you still used freetype2 because the ~native AOS4 font engine (bullet "standard") "ft2.library" is using freetype2. So freetype2 is used either way, either directly by app or indirectly through AOS font engine.

Quote:
All of it open source of course, in Pleyo's OWB SVN.


I have looked on old HD and I have some owb-1.9-src.tar.bz2 lying around. 25317487 bytes big.

.        4815 2010-08-14 17:36 owb-1.9-src/BAL/Fonts/WebCore/AmigaOS4/BCGlyphPageTreeNodeAmigaOS4.cpp
        17026 2010
-08-14 17:36 owb-1.9-src/BAL/Fonts/WebCore/AmigaOS4/BCFontPlatformDataAmigaOS4.cpp
        10595 2010
-08-14 17:36 owb-1.9-src/BAL/Fonts/WebCore/AmigaOS4/BCSimpleFontDataAmigaOS4.cpp
         4861 2010
-08-14 17:36 owb-1.9-src/BAL/Fonts/WebCore/AmigaOS4/BCSimpleFontDataAmigaOS4.h
         4138 2010
-08-14 17:36 owb-1.9-src/BAL/Fonts/WebCore/AmigaOS4/BCFontCacheAmigaOS4.cpp
         2527 2010
-08-14 17:36 owb-1.9-src/BAL/Fonts/WebCore/AmigaOS4/BCFontCustomPlatformDataAmigaOS4.cpp
         3691 2010
-08-14 17:36 owb-1.9-src/BAL/Fonts/WebCore/AmigaOS4/BCGlyphBufferAmigaOS4.h
        10269 2010
-08-14 17:36 owb-1.9-src/BAL/Fonts/WebCore/AmigaOS4/BCFontAmigaOS4.cpp
         2152 2010
-08-14 17:36 owb-1.9-src/BAL/Fonts/WebCore/AmigaOS4/BCFontCustomPlatformDataAmigaOS4.h
         3044 2010
-08-14 17:36 owb-1.9-src/BAL/Fonts/WebCore/AmigaOS4/BCFontPlatformDataAmigaOS4.h


static void drawglyphs(GraphicsContext* context, const SimpleFontData* font, const GlyphBuffer& glyphBuffer,
                      
int from, int numGlyphs, const FloatPoint& point, float height, float ascent,
                      
uint32 penalpha, uint32 penr, uint32 peng, uint32 penb, int shadowx, int shadowy)
{
    
GlyphBufferGlyph* glyphs = const_cast<GlyphBufferGlyph*>(glyphBuffer.glyphs(from));
    
struct OutlineFont *face = font->m_platformData.m_face;
    
uint32 ysize = font->m_platformData.m_size;

    
int32 imagewidth = 0;
    
uint32 onlyspaces = TRUE;
    for (
int i = 0; i < numGlyphs; i++) {
        if (
32 != glyphs[i])
            
onlyspaces = FALSE;
        
imagewidth += glyphBuffer.advanceAt(from + i);
    }

    if (
onlyspaces)
       return;

    if (
imagewidth <= 0)
        return;

    
imagewidth += 2 * (ysize * amigaConfig.fontXDPI / 72);

    
Vector<unsigned> *glyphRGBABuffer = new Vector<unsigned>(imagewidth * height);
    if (!
glyphRGBABuffer)
        return;

    
glyphRGBABuffer->fill(0);

    
int32 offsetinimg = 0;
    
uint32 shiftleft = 0;

    for (
int i = 0; i < numGlyphs; i++) {
        if (
32 == glyphs[i]) {
            
offsetinimg += glyphBuffer.advanceAt(from + i);
            continue;
        }

        
struct GlyphMap *glyph;

        if (
IDiskfont->ESetInfo(&face->olf_EEngine,
                                
OT_GlyphCode, glyphs[i],
                                
TAG_END))
            continue; 
//do not handle error

        
struct OutlineFont *curface = face;
        if (
IDiskfont->EObtainInfo(&face->olf_EEngine,
                                   
OT_GlyphMap8Bit, &glyph,
                                   
TAG_END)) {
            
uint32 ok = FALSE;

            if (
amigaConfig.unicodeFace
             
&& !IDiskfont->ESetInfo(&amigaConfig.unicodeFace->olf_EEngine,
                                     
OT_PointHeight, ysize << 16,
                                     
OT_GlyphCode, glyphs[i],
                                     
TAG_END)
             && !
IDiskfont->EObtainInfo(&amigaConfig.unicodeFace->olf_EEngine,
                                        
OT_GlyphMap8Bit, &glyph,
                                        
TAG_END)) {
                
curface = amigaConfig.unicodeFace;
                
ok = TRUE;
            }

            if (!
ok
             
&& !IDiskfont->ESetInfo(&face->olf_EEngine,
                                     
OT_GlyphCode, 0xFFFD,
                                     
TAG_END)
             && !
IDiskfont->EObtainInfo(&face->olf_EEngine,
                                        
OT_GlyphMap8Bit, &glyph,
                                        
TAG_END))
                
ok = TRUE;

            if (!
ok
             
&& !IDiskfont->ESetInfo(&face->olf_EEngine,
                                     
OT_GlyphCode, '?',
                                     
TAG_END)
             && !
IDiskfont->EObtainInfo(&face->olf_EEngine,
                                        
OT_GlyphMap8Bit, &glyph,
                                        
TAG_END))
                
ok = TRUE;

            if (!
ok)
                continue; 
//do not handle error
        
}

        if (
amigaConfig.fontKerning && i > 0)
            if (!
IDiskfont->ESetInfo(&curface->olf_EEngine,
                                     
OT_GlyphCode, glyphs[i -1],
                                     
OT_GlyphCode2, glyphs[i],
                                     
TAG_END)) {
                
FIXED kern = 0;
                if (!
IDiskfont->EObtainInfo(&curface->olf_EEngine,
                                            
OT_TextKernPair, &kern,
                                            
TAG_END))
                    if (
kern)
                        
offsetinimg -= (int)(kern / 65536.0 * ysize * amigaConfig.fontYDPI / 72);
            }

        
uint32 left = glyph->glm_BlackLeft;
        
uint32 top = glyph->glm_BlackTop;
        
int32 width = glyph->glm_BlackWidth;
        
int32 gheight = glyph->glm_BlackHeight;
        
int32 x0 = glyph->glm_X0;
        
int32 y0 = glyph->glm_Y0;
        
uint32 modulo = glyph->glm_BMModulo;
        
int32 imgoffsetx = -x0 + left;

        if (
offsetinimg + imgoffsetx < 0) {
            if (
0 == i) {
                
shiftleft = -imgoffsetx;
                if (
shiftleft > ysize) {
                    
shiftleft = ysize;
                    
imgoffsetx = -ysize;
                }
                
offsetinimg = shiftleft;
            }
            else
                
imgoffsetx = 0;
        }

        
int32 imgoffsety = ascent - y0 + top;

        if (
imgoffsety < 0)
            
imgoffsety = 0;

        if (
offsetinimg + imgoffsetx + width > imagewidth) {
            
int32 signedwidth = imagewidth - offsetinimg - imgoffsetx;
            if (
signedwidth < 0)
                
signedwidth = 0;
            
width = signedwidth;
        }

        if (
imgoffsety + gheight > (int)height)
            
gheight = height - imgoffsety;

        for (
int32 y = 0; y < gheight ; y++) {
            
uint32 top_mod_left = (y + top) * modulo + left;
            for (
int32 x = 0; x < width; x++)
                if ((
offsetinimg + imgoffsetx + x < imagewidth)
                 && (
offsetinimg + imgoffsetx + x >= 0)) {
                    
uint32 a = penalpha * glyph->glm_BitMap[top_mod_left + x] / 255;
                    if (
a) {
                        
uint32 oldARGB = (*glyphRGBABuffer)[(imgoffsety + y) * imagewidth + offsetinimg + imgoffsetx + x];
                        if (
oldARGB)
                            
a = std::max((oldARGB >> 24), a);
                        (*
glyphRGBABuffer)[(imgoffsety + y) * imagewidth + offsetinimg + imgoffsetx + x] = (a << 24) | ((penr * a / 255) << 16) | ((peng * a / 255) << 8) | (penb * a / 255);
                    }
                }
        }

        
offsetinimg += glyphBuffer.advanceAt(from + i);

        
IDiskfont->EReleaseInfo(&curface->olf_EEngine, OT_GlyphMap8Bit, glyph, TAG_END);
    }

    
cairo_surface_t *surface = cairo_image_surface_create_for_data((unsigned char *)glyphRGBABuffer->data(), CAIRO_FORMAT_ARGB32, imagewidth, height, imagewidth * 4);
    if (
surface) {
        
cairo_t* cr = context->platformContext();

        
cairo_set_source_surface(cr, surface, point.x() - shiftleft + shadowx, point.y() - ascent + shadowy);
        
cairo_paint(cr);

        
cairo_surface_destroy(surface);
    }

    
delete glyphRGBABuffer;
}

Go to top


Re: 2026 October-Gaming Competition-Balance Blox by EntwicklerX ! 
Home away from home
Home away from home


@emeck

I have to pick up my game to keep up with you guys

_______________________________
c64-dual sids, A1000, A1200-060@93, A4000-CSMKIII
PiStorm32 & Catweasel MK4+= Amazing
! My Master Miggies-Amiga1000 & AmigaONE X1000 !
mancave-ramblings

Go to top


Re: New modern Webrowser Quasar
Quite a regular
Quite a regular


Hello guys!

I´m in my not Mclaren timemachine or am I ?

1989-> A500, A600, A3000, A4000, A1200, CD32, µA1, PegII, A1XE, CDTV, Amy/416D79, A1X5000, Vampire 500 V2+, Vampire 600 V2, Amy-ITX, Denise ITX, Apollo V4SA, A1X5000/40 <-2026
Go to top


Re: New modern Webrowser Quasar
Amigans Defender
Amigans Defender


Plus diskfont/ft2 has a lot of other s**t that I could explain but I prefer to avoid..

i'm really tired...
Go to top


Re: Demos of the Week: Shaders on Mesa
Quite a regular
Quite a regular


@kas1e

Lifeforce dont work well with resolutions over 1920x1080 sadly,
distorded right hand side.

1989-> A500, A600, A3000, A4000, A1200, CD32, µA1, PegII, A1XE, CDTV, Amy/416D79, A1X5000, Vampire 500 V2+, Vampire 600 V2, Amy-ITX, Denise ITX, Apollo V4SA, A1X5000/40 <-2026
Go to top


Re: Demos of the Week: Shaders on Mesa
Just can't stay away
Just can't stay away


Awesome release! Never thought I would see any OS4 program running at >100fps! Stunning.

AmigaOne X1000.
Radeon RX580

http://www.tinylife.org.uk/
Go to top


Re: New modern Webrowser Quasar
Just can't stay away
Just can't stay away


@joergQuote:
joerg wrote:@Maijestro
Quote:
Fonts via fontconfig, PROGDIR:Fonts/WkSans.ttf, plus SYS:Fonts
I guess libfreetype + fontconfig?
Why?

I implemented AmigaOS 4.x native font rendering in OWB nearly 20 years ago already and it was at least 10 times faster than using libfreetype2. All of it open source of course, in Pleyo's OWB SVN.


Yes: libfreetype + fontconfig + HarfBuzz + Cairo. That is the WebKit 2.50 text stack (same family as WebKitGTK), not a random extra.

Your OWB diskfont path was the right call for that engine. Quasar is not that WebKit. Layout, CSS, @font-face, WOFF/OTF, and complex scripts all go through FontPlatformData/FreeType and HarfBuzz. Page text is UTF-16 inside the engine; glyphs come from the TTF Unicode cmap. AmigaOS codesets / diskfont.library cannot be that backend without rewriting the font cache, glyph pages, and shaper.

Speed: diskfont can beat FreeType on a handful of Latin UI glyphs. A modern page is not that. Glyphs are cached; the cost is layout and script, not Bullet vs FT per letter. We still ship PROGDIR:Fonts/WkSans.ttf so it runs without a tuned SYS:Fonts set. fontconfig can index extra TTFs under PROGDIR (and SYS:Fonts when they are real TTF), it does not draw through diskfont.

So: native OS4 fonts stay a possible fallback for chrome later. They are not a drop-in replacement for the 2.50 web text path. I did look at the old OWB sources — different problem.

MacStudio ARM M1 Max Qemu//Pegasos2 AmigaOs4.1 FE / AmigaOne x5000/40 AmigaOs4.1 FE
Go to top


Re: Vote/suggestions for the software and game reimplementations
Just can't stay away
Just can't stay away


If I could wish for one game on AmigaOS 4.1, it would be Wing Commander Saga: The Darkest Dawn.

It is a finished Wing Commander story, and it already runs on the open-source FreeSpace Open engine. That engine is cross-platform C++ and uses the usual pieces AmigaOS 4.1 already has: SDL, OpenGL, and OpenAL. So this is a port of an existing engine, not a rewrite of the game. I would love to see it fly on AmigaOS 4.1.

MacStudio ARM M1 Max Qemu//Pegasos2 AmigaOs4.1 FE / AmigaOne x5000/40 AmigaOs4.1 FE
Go to top


Re: Vote/suggestions for the software and game reimplementations
Quite a regular
Quite a regular


And if someone have worked on an Amiga flightsim all these years!
Time to show off !

1989-> A500, A600, A3000, A4000, A1200, CD32, µA1, PegII, A1XE, CDTV, Amy/416D79, A1X5000, Vampire 500 V2+, Vampire 600 V2, Amy-ITX, Denise ITX, Apollo V4SA, A1X5000/40 <-2026
Go to top


Re: Vote/suggestions for the software and game reimplementations
Just popping in
Just popping in


Yes, @khayoz, I agree – BRING IT BACK!!!
There are so many good flight simulators that would be a welcome addition to our PPC machines :D

Go to top


Re: Demos of the Week: Shaders on Mesa
Just popping in
Just popping in


Amazing job @Kas1e! That’s unbelievable :D

Go to top


Re: 2026 October-Gaming Competition-Balance Blox by EntwicklerX ! 
Just popping in
Just popping in


@328gts
@BillE

This is getting tight!

Next base: 30030

Resized Image

A1222 Tabor AOS4.1 FE Update 3
Go to top


Re: Demos of the Week: Shaders on Mesa
Home away from home
Home away from home


damn great demo’s for our PPC miggies

_______________________________
c64-dual sids, A1000, A1200-060@93, A4000-CSMKIII
PiStorm32 & Catweasel MK4+= Amazing
! My Master Miggies-Amiga1000 & AmigaONE X1000 !
mancave-ramblings

Go to top


Re: 2026 October-Gaming Competition-Balance Blox by EntwicklerX ! 
Home away from home
Home away from home


@BillE



what system you playing on?

_______________________________
c64-dual sids, A1000, A1200-060@93, A4000-CSMKIII
PiStorm32 & Catweasel MK4+= Amazing
! My Master Miggies-Amiga1000 & AmigaONE X1000 !
mancave-ramblings

Go to top


Re: Vote/suggestions for the software and game reimplementations
Not too shy to talk
Not too shy to talk



Go to top


Re: Vote/suggestions for the software and game reimplementations
Just can't stay away
Just can't stay away


@joerg

I'm using (new) sii3132sata.device from Acube (https://www.acube-systems.biz/download ... =sii3132sata_dev_v1.2.lha) when using with CDFS v53.11 I get in BURN IMAGE "CD0: HL-DF-ST DVDRAM...." in Drive chooser and can burn CD/DVD.

But when using ODFileSystem (or beta CDFS v55) in Drive chooser I have a blank entry and can't burn CD/DVD.

So seems AmiDVD uses CDFS for something.

Does AmiDVD has some debug option?

Go to top


Re: New modern Webrowser Quasar
Home away from home
Home away from home


@Maijestro

Wow. Looking good. This is a needed product for OS4.

X5000
Go to top


Re: Vote/suggestions for the software and game reimplementations
Home away from home
Home away from home


@jabirulo
Quote:
For "resource" I mean CDFilesystem kicklayout/handler.

Usikng AmiDVD 1.54 ( 9-10-2023) licenced to A-EON Technology Ltd

With ODFileSystem from os4depot/github and in BURN IMAGE I get an empty "Drive" chooser, so don't know how you get/fill that list, but with ODFilesystem (works fine under OS4, can read many CD/DVD formats) it doesn't show any "CDx: blah blah" entry on "Drive" chooser.
I never used ODFileSystemm, but AmiDVD may depend on the CD/DVD/BlueRay file system using DOSType "CD01" (shortcut for "CD001", which is the official ISO 9660 FS identifier, but AmigaOS DOSTypes are limited to 32 bits, 4 chars).
All AmigaOS CDFileSystems I know of, the commodore CDTV/CD³² based ones, as well as any 3rd party ones like CacheCDFS (incl. the AmigaOS 3.9 version), AmiCDROM, AmiCDFS, AsimCDFS, BabelCDFS, etc., are IIRC all using the same DOSType "CD01".

If it's not related to that:
Which PATA/SATA/SCSI/etc. device driver are you using? An incompletely implemented one could cause problems as well.
I only tested, or had beta testers testing it for me, AmiDVD with sg2's PATA/SATA/SCSI drivers (a1ide.device, peg2ide.device, sii0680ide.device, sii3112ide.device, sii3114ide.device, sii3512ide.device, lsi53c8xx.device, etc.) and Ignatio's NetBSD based SCSI driver (cbyppc.device).

Go to top


Re: New modern Webrowser Quasar
Home away from home
Home away from home


@samo79
Quote:
Yeah, fonts on your old Origyn Web Browser had also a nicer look, where we can found the source?
All of my AmigaOS 4.x parts were on the Pleyo OWB SVN.
That doesn't exist since several years anymore, but the author of the AROS OWB port who, unlike the MorphOS OWB developer, uploaded all of his changes to the Pleyo SVN as well may still have a copy of those sources.
I don't have the complete OWB sources anymore, all I have on backups are diffs of my latest changes to the OWN SVN, and the sources of my AmigaOS 3.9/m68k port which doesn't include the AmigaOS 4.x-only AmigaOS native font rendering functions: The bullet.library from AGFA Compugraphic used in AmigaOS 2.1-3.9 was way too limited compared to Detlef's AmigaOS 4.x outline font engine.

Go to top



TopTop
(1) 2 3 4 ... 7800 »




Powered by XOOPS 2.0 © 2001-2024 The XOOPS Project