Project

General

Profile

Download (4.48 KB) Statistics
| Branch: | Revision:

phasedsolver / src / main / java / org / distorted / phasedsolver / SolverSurfaceView.java @ 99b18adc

1
///////////////////////////////////////////////////////////////////////////////////////////////////
2
// Copyright 2024 Leszek Koltunski                                                               //
3
//                                                                                               //
4
// This file is part of Magic Cube.                                                              //
5
//                                                                                               //
6
// Magic Cube is proprietary software licensed under an EULA which you should have received      //
7
// along with the code. If not, check https://distorted.org/magic/License-Magic-Cube.html        //
8
///////////////////////////////////////////////////////////////////////////////////////////////////
9

    
10
package org.distorted.phasedsolver;
11

    
12
import static org.distorted.objectlib.main.ObjectControl.MODE_ROTATE;
13

    
14
import android.app.ActivityManager;
15
import android.content.Context;
16
import android.content.pm.ConfigurationInfo;
17
import android.opengl.GLSurfaceView;
18
import android.util.AttributeSet;
19
import android.view.MotionEvent;
20

    
21
import org.distorted.objectlib.main.ObjectControl;
22
import org.distorted.objectlib.main.TwistyObjectNode;
23
import org.distorted.os.OSInterface;
24

    
25
///////////////////////////////////////////////////////////////////////////////////////////////////
26

    
27
class SolverSurfaceView extends GLSurfaceView
28
{
29
    private ObjectControl mObjectController;
30
    private OSInterface mInterface;
31
    private SolverRenderer mRenderer;
32
    private int mScreenWidth;
33
    private boolean mCreated;
34

    
35
///////////////////////////////////////////////////////////////////////////////////////////////////
36

    
37
    void setScreenSize(int width, int height)
38
      {
39
      mScreenWidth = width;
40
      mObjectController.setScreenSizeAndScaling(width,height, Math.min(width,height) );
41

    
42
      if( !mCreated )
43
        {
44
        mCreated = true;
45
        mObjectController.createNode(width,height);
46
        TwistyObjectNode objectNode = mObjectController.getNode();
47
        mRenderer.getScreen().attach(objectNode);
48
        }
49
      }
50

    
51
///////////////////////////////////////////////////////////////////////////////////////////////////
52

    
53
    int getScreenWidth()
54
      {
55
      return mScreenWidth;
56
      }
57

    
58
///////////////////////////////////////////////////////////////////////////////////////////////////
59

    
60
    ObjectControl getObjectControl()
61
      {
62
      return mObjectController;
63
      }
64

    
65
///////////////////////////////////////////////////////////////////////////////////////////////////
66

    
67
    OSInterface getInterface()
68
      {
69
      return mInterface;
70
      }
71

    
72
///////////////////////////////////////////////////////////////////////////////////////////////////
73

    
74
    SolverRenderer getRenderer()
75
      {
76
      return mRenderer;
77
      }
78

    
79
///////////////////////////////////////////////////////////////////////////////////////////////////
80

    
81
    public SolverSurfaceView(Context context, AttributeSet attrs)
82
      {
83
      super(context,attrs);
84

    
85
      mCreated = false;
86

    
87
      if(!isInEditMode())
88
        {
89
        SolverActivity act = (SolverActivity)context;
90
        SolverObjectLibInterface ref = new SolverObjectLibInterface(act);
91
        mInterface = new OSInterface(act,ref);
92
        mObjectController = new ObjectControl(mInterface);
93

    
94
        mRenderer = new SolverRenderer(this);
95
        final ActivityManager activityManager= (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
96
        final ConfigurationInfo configurationInfo = activityManager.getDeviceConfigurationInfo();
97
        int esVersion = configurationInfo.reqGlEsVersion>>16;
98
        setEGLContextClientVersion(esVersion);
99
        setRenderer(mRenderer);
100
        }
101
      }
102

    
103
///////////////////////////////////////////////////////////////////////////////////////////////////
104

    
105
    @Override
106
    public void onPause()
107
      {
108
      super.onPause();
109
      mObjectController.onPause();
110
      }
111

    
112
///////////////////////////////////////////////////////////////////////////////////////////////////
113

    
114
    @Override
115
    public void onResume()
116
      {
117
      super.onResume();
118
      mObjectController.onResume();
119
      }
120

    
121
///////////////////////////////////////////////////////////////////////////////////////////////////
122

    
123
    @Override
124
    public boolean onTouchEvent(MotionEvent event)
125
      {
126
      mInterface.setMotionEvent(event);
127
      return mObjectController.onTouchEvent(MODE_ROTATE);
128
      }
129
}
130

    
(5-5/5)