Home > Products > SophiaFramework UNIVERSE > Tutorial > HelloWorld > - 5 / 7 -

BREW HelloWorld - 5 / 7 -

Source Code

Boot Code

Any application coded with SophiaFramework UNIVERSE needs to have SFCApplet::Boot() function and Factory() function.

//
//      HelloWorld.cpp
//

#include "HelloWorld.hpp"

// Boot loader
SFCApplet::FactorySPP SFCApplet::Boot(AEECLSID id, SFXAnsiStringPtr license)
{
    *license = "heap://"
      		"TIXDRQXNU5WHU8Y3Z9WOHWQR6Z3VPSDHDV"
      		"5CR1S4XASPWLUHWAS7Z5Z2TGS3XMSAT3UP"
      		"UQTLTARCYPSFUEJZ6ROSJWGUQSEYKR6V2U"
      		"4VESMTQLHKZ6X7Y2VKXHWIX3XBU0Z7VHWH"
      		"XIZBSGT5SPU3XLX0Z1Y4R3TCU6WGT9WHWI"
      		"VNYHYCUCR9T3SMTEWPRNVAX1Y4VPW2YCY9"
      		"YQV5R7Z9UIVHT6SDUPU2SIW6VCRCWBR2S4"
      		"WQUPYFWCYGT4VIT1WHXGYPTQSFYPWNV3UL"
      		"RNWFW7RBRFVKUKS2YQSQYHW1TPUPXBZ6UE"
      		"Y2WOYKR7S3TAU4TQS6UHVFVEVLU3R5SDSK"
      		"W7RPTNTPVQU2T4R8Z4VLUGEW3U98TLDR8/";

   return (id==AEECLSID_HELLOWORLD) ? (&HelloWorld::Factory) : (null);
}

// Factory function
SFCInvokerPtr HelloWorld::Factory(Void)
{
    return ::new HelloWorld;
}

Application Class ( HelloWorld class )

Since it uses GUI framework, HelloWorld class inherits SFRApplication class.

//
//      HelloWorld.hpp
//

#ifndef __HELLOWORLD_HPP
#define __HELLOWORLD_HPP

#include <SophiaFramework.hpp>
#include "HelloWorld.bid"

//
//  HelloWorld application class
//
SFMTYPEDEFCLASS(HelloWorld)
class HelloWorld : public SFRApplication {
    SFMSEALCOPY(HelloWorld)
public:
    static SFCInvokerPtr Factory(Void);
private:
    explicit HelloWorld(Void) static_throws;
    virtual ~HelloWorld(Void);
    HANDLER_DECLARE_VOIDRENDER(OnRenderContent)
    HANDLER_DECLARE_BOOLEVENT(OnKey)
};

#endif // __HELLOWORLD_HPP //

Event Handlers

Event handler executes certain process when application boots up, or a key is pushed.

Code drawing process in drawing handler. By coding graphics->DrawText() function, "HelloWorld" will be displayed on the screen.

// Drawing handler
HANDLER_IMPLEMENT_VOIDRENDER(HelloWorld, OnRenderContent, graphics)
{
    //Constant struct

    static SFXRGBColor::AtomRecConst black = {
        0x00, 0x00, 0x00, 0x00
    };

    // Screen is cleared

    SFRApplication::ContentHandler(graphics);

    // Draw text

    graphics->DrawText("Hello World", GetContentWorld(), black);
    return; 
}

Code events in key handler.

// Key handler
HANDLER_IMPLEMENT_BOOLEVENT(HelloWorld, OnKey, event)
{
    switch (event.GetP16()) {
        case AVK_SELECT: // When select key is pushed
            Terminate(); // Finish application
            return true;
    }
    return false;
}

Register Event Handler

Register event handler by using RegisterHandler function. Throw in event code, data attached with event code, when to invoke the function, function pointer as option.

// Constructor
HelloWorld::HelloWorld(Void) static_throws
{
    if (static_try()) {
        static_throw(
            RegisterHandler(SREVT_RESPONDER_RENDER, SRP16_RENDER_CONTENT,
               HANDLER_BEFORE, HANDLER_FUNCTION(OnRenderContent)));
    }
    if (static_try()) {
        static_throw(
         RegisterHandler(SFEVT_KEY, HANDLER_AFTER, HANDLER_FUNCTION(OnKey)));
    }
    return;
}

// Destructor
HelloWorld::HelloWorld(Void)
{
    return;
}

Go back  1   2   3   4   5   Apdx   SFC   Next page