예제 #1
0
//================================================================
void detach_free_draw_from_track(TrackSceneNode* t, int fdid)
{
    if(!t) return;
    if(!is_free_draw_rectangle(fdid)) return;

    for( int i = 0; i < t->freedrawvec.size(); i++) 
    {
        if( t->freedrawvec[i] == fdid)
        {
            t->freedrawvec[i] = -1;
            return;
        }
    }
}
예제 #2
0
//================================================================
void detach_free_draw_from_scene(int scene, int fdid)
{
    if(!is_track_scene(scene)) return;
    if(!is_free_draw_rectangle(fdid)) return;
    TrackScene* ts = trackscenevec[scene];
    for( int i = 0; i < ts->freedrawvec.size(); i++) 
    {
        if( ts->freedrawvec[i] == fdid)
        {
            ts->freedrawvec[i] = -1;
            i = ts->freedrawvec.size();
        }
    }
}
예제 #3
0
//================================================================
void attach_free_draw_to_track(TrackSceneNode* t, int fdid)
{
    if(!t) return;
    if(!is_free_draw_rectangle(fdid)) return;
    for( int i = 0; i < t->freedrawvec.size(); i++)
    {
        if( t->freedrawvec[i] == -1)
        {
            t->freedrawvec[i] = fdid;
            return;
        }
    }

    t->freedrawvec.push_back(fdid);

}
예제 #4
0
//================================================================
void attach_free_draw_to_scene(int fdid)
{
    if(!is_scene_bound()) return;
    if(!is_track_scene(BoundScene)) return;
    if(!is_free_draw_rectangle(fdid)) return;
    TrackScene* ts = trackscenevec[BoundScene];
    for( int i = 0; i < ts->freedrawvec.size(); i++)
    {
        if( ts->freedrawvec[i] == -1)
        {
            ts->freedrawvec[i] = fdid;
            return;
        }
    }

    trackscenevec[BoundScene]->freedrawvec.push_back(fdid);
}
예제 #5
0
//==========================================================================
void free_free_draw_rectangle(int fdid)
{
    if(!is_free_draw_rectangle(fdid)) return;
    TrackSceneNode* tsn;
    CoreSection* cs;
    tsn = get_scene_track( freedrawvec[fdid]->track);
    cs = get_track_section( tsn, freedrawvec[fdid]->section );

    if( cs )
        detach_free_draw_from_section( cs, fdid );
    else if( tsn )
        detach_free_draw_from_track( tsn, fdid );
    else
        detach_free_draw_from_scene( fdid );

    delete freedrawvec[fdid];
    freedrawvec[fdid] = NULL;
}
예제 #6
0
//==========================================================================
void set_free_draw_width(int fdid, float w)
{
    if(!is_free_draw_rectangle(fdid)) return;
    freedrawvec[fdid]->w = w;
}
예제 #7
0
//==========================================================================
void render_free_draw(int fdid)
{
    try 
    {
#ifdef DEBUG
        printf("render_free_draw called %%%%%%%%%%%\n");
#endif
        if( !is_free_draw_rectangle(fdid)) return;
        if( !is_free_draw_visible(fdid)) return;

        PluginFreeDrawRectangle *pfdr = freedrawvec[fdid];

#ifdef DEBUG
        printf("PFDR Data:\nPlugin %d\nX: %f\tY: %f\n", pfdr->plugin,
               pfdr->x, pfdr->y);
        printf("W: %f\tH: %f\n", pfdr->w, pfdr->h);
#endif

        JNIEnv*   jenv = get_current_jnienv();
        if( !jenv ) return;

#ifdef DEBUG
        else printf("JNIEnv Yay\n");
#endif

        jobject   pmo  = get_plugin_manager_object();
        if( !pmo ) { printf("NULL PMO\n"); return; }

#ifdef DEBUG
        else printf("PMO Yay %d\n", pmo);
#endif

        jclass    pmc  = get_plugin_manager_class();
        if( !pmc ) { return; }

#ifdef DEBUG
        else printf("PMC Yay %d\n", pmc);
#endif

        jmethodID pmm  = get_plugin_manager_get_plugin();
        if( !pmm ) {  return; }

#ifdef DEBUG
        else printf("PMM Yay %d\n", pmm);
#endif

        jobject   cpo  = jenv->CallObjectMethod( pmo, pmm, 
                                                 pfdr->plugin);
        if( !cpo ) {  return; }

#ifdef DEBUG
        else printf("CPO Yay\n");
#endif

        jclass    cpc  = jenv->GetObjectClass(cpo);
        if( !cpc ) { return; }

#ifdef DEBUG
        else printf("CPC Yay\n");
#endif

        jmethodID cpm  = jenv->GetMethodID( cpc, "renderRectangle",
                                            "(IIIIFFFFF)V");
        if( !cpm ) { return; }
#ifdef DEBUG
        else printf("CPM Yay\n");

        printf("Calling object method!!!\n");
        fflush(stdout);
#endif
        
        int cur_canvas = get_current_canvas();

        // if the track id and section id != -1 then set the 
        // width as the the width of the section image scaled for the
        // canvas

        CoreSection *cs = get_track_section(get_scene_track(pfdr->track),
                                                pfdr->section);
        
        jenv->CallObjectMethod( cpo, cpm, fdid, cur_canvas,
                                pfdr->track, pfdr->section, 
                                pfdr->x, pfdr->y, pfdr->w, pfdr->h,
                                get_canvas_height(cur_canvas) /
                                get_canvas_orig_height(cur_canvas));
        
#ifdef DEBUG
        printf("Called Object Method!!!!\n");
#endif

    }
    catch( ... )
    {
        printf("Something very strange!\n");
    }
}
예제 #8
0
//==========================================================================
void set_free_draw_scale_independence( int fdid, bool flag ) 
{
    if( !is_free_draw_rectangle(fdid))
        return;
    freedrawvec[fdid]->scale_independent = flag;
}
예제 #9
0
//==========================================================================
void set_free_draw_visibility( int fdid, bool flag) 
{
    if( !is_free_draw_rectangle(fdid)) return;
    freedrawvec[fdid]->visible = flag;
}
예제 #10
0
//==========================================================================
void set_free_draw_x(int fdid, float x)
{
    if(!is_free_draw_rectangle(fdid)) return;
    freedrawvec[fdid]->x = x;
}
예제 #11
0
//==========================================================================
void set_free_draw_y(int fdid, float y)
{
    if(!is_free_draw_rectangle(fdid)) return;
    freedrawvec[fdid]->y = y;
}
예제 #12
0
//==========================================================================
int get_free_draw_plugin(int fdid)
{
    if( !is_free_draw_rectangle(fdid)) return -1;
    return freedrawvec[fdid]->plugin;
}
예제 #13
0
//==========================================================================
void set_free_draw_height(int fdid, float h)
{
    if(!is_free_draw_rectangle(fdid)) return;
    freedrawvec[fdid]->h = h;
}
예제 #14
0
//==========================================================================
bool is_free_draw_visible(int fdid) 
{
    if(!is_free_draw_rectangle(fdid)) return false;
    return freedrawvec[fdid]->visible;
}
예제 #15
0
//==========================================================================
bool is_free_draw_scale_independent( int fdid ) {
    if( !is_free_draw_rectangle(fdid))
        return false;
    return freedrawvec[fdid]->scale_independent;
}
예제 #16
0
//==========================================================================
float get_free_draw_y(int fdid)
{
    if( !is_free_draw_rectangle(fdid)) return 0.0f;
    return freedrawvec[fdid]->y;
}
예제 #17
0
//==========================================================================
int get_free_draw_section(int fdid)
{
    if( !is_free_draw_rectangle(fdid)) return -1;
    return freedrawvec[fdid]->section;
}
예제 #18
0
//==========================================================================
int get_free_draw_track(int fdid)
{
    if( !is_free_draw_rectangle(fdid)) return -1;
    return freedrawvec[fdid]->track;
}