Cocoa Port: New feature -- add Hybrid display orientations.
- The new Hybrid display orientations show three NDS screens — the top and bottom screens on the left side, and a larger major screen on the right side. This feature is intended to better use the widescreen resolution of most users’ host displays, which are usually 16:9 or 16:10. Three different Hybrid orientations are provided (3:2, 16:9, and 16:10) so that users can choose the display size ratio that they prefer. - Horizontal display orientation no longer uses the display separation setting. - Do some additional code cleanup.
This commit is contained in:
parent
cf8f021b30
commit
207a3b2e9e
|
@ -5584,7 +5584,7 @@ bool OGLImage::CanUseShaderBasedFilters()
|
|||
return this->_canUseShaderBasedFilters;
|
||||
}
|
||||
|
||||
void OGLImage::GetNormalSize(double &w, double &h)
|
||||
void OGLImage::GetNormalSize(double &w, double &h) const
|
||||
{
|
||||
w = this->_normalWidth;
|
||||
h = this->_normalHeight;
|
||||
|
@ -6736,16 +6736,14 @@ OGLDisplayLayer::OGLDisplayLayer(OGLVideoOutput *oglVO)
|
|||
_needUpdateVertices = true;
|
||||
_useDeposterize = false;
|
||||
|
||||
_displayWidth = GPU_DISPLAY_WIDTH;
|
||||
_displayHeight = GPU_DISPLAY_HEIGHT;
|
||||
_displayMode = DS_DISPLAY_TYPE_DUAL;
|
||||
_displayOrder = DS_DISPLAY_ORDER_MAIN_FIRST;
|
||||
_displayOrientation = DS_DISPLAY_ORIENTATION_VERTICAL;
|
||||
_displayMode = ClientDisplayMode_Dual;
|
||||
_displayOrder = ClientDisplayOrder_MainFirst;
|
||||
_displayOrientation = ClientDisplayLayout_Vertical;
|
||||
|
||||
_gapScalar = 0.0f;
|
||||
_rotation = 0.0f;
|
||||
_normalWidth = _displayWidth;
|
||||
_normalHeight = _displayHeight*2.0 + ((_displayHeight * DS_DISPLAY_VERTICAL_GAP_TO_HEIGHT_RATIO) * _gapScalar);
|
||||
_normalWidth = GPU_DISPLAY_WIDTH;
|
||||
_normalHeight = GPU_DISPLAY_HEIGHT*2.0 + (DS_DISPLAY_UNSCALED_GAP*_gapScalar);
|
||||
|
||||
_vf[0] = new VideoFilter(GPU_DISPLAY_WIDTH, GPU_DISPLAY_HEIGHT, VideoFilterTypeID_None, 0);
|
||||
_vf[1] = new VideoFilter(GPU_DISPLAY_WIDTH, GPU_DISPLAY_HEIGHT, VideoFilterTypeID_None, 0);
|
||||
|
@ -6832,9 +6830,9 @@ OGLDisplayLayer::OGLDisplayLayer(OGLVideoOutput *oglVO)
|
|||
glGenBuffersARB(1, &_vboTexCoordID);
|
||||
|
||||
glBindBufferARB(GL_ARRAY_BUFFER_ARB, _vboVertexID);
|
||||
glBufferDataARB(GL_ARRAY_BUFFER_ARB, sizeof(GLint) * (2 * 8), NULL, GL_STATIC_DRAW_ARB);
|
||||
glBufferDataARB(GL_ARRAY_BUFFER_ARB, sizeof(GLfloat) * (4 * 8), NULL, GL_STATIC_DRAW_ARB);
|
||||
glBindBufferARB(GL_ARRAY_BUFFER_ARB, _vboTexCoordID);
|
||||
glBufferDataARB(GL_ARRAY_BUFFER_ARB, sizeof(GLfloat) * (2 * 8), NULL, GL_STREAM_DRAW_ARB);
|
||||
glBufferDataARB(GL_ARRAY_BUFFER_ARB, sizeof(GLfloat) * (4 * 8), NULL, GL_STREAM_DRAW_ARB);
|
||||
glBindBufferARB(GL_ARRAY_BUFFER_ARB, 0);
|
||||
|
||||
// Set up VAO
|
||||
|
@ -6844,7 +6842,7 @@ OGLDisplayLayer::OGLDisplayLayer(OGLVideoOutput *oglVO)
|
|||
if (this->_output->GetInfo()->IsShaderSupported())
|
||||
{
|
||||
glBindBufferARB(GL_ARRAY_BUFFER_ARB, _vboVertexID);
|
||||
glVertexAttribPointer(OGLVertexAttributeID_Position, 2, GL_INT, GL_FALSE, 0, 0);
|
||||
glVertexAttribPointer(OGLVertexAttributeID_Position, 2, GL_FLOAT, GL_FALSE, 0, 0);
|
||||
glBindBufferARB(GL_ARRAY_BUFFER_ARB, _vboTexCoordID);
|
||||
glVertexAttribPointer(OGLVertexAttributeID_TexCoord0, 2, GL_FLOAT, GL_FALSE, 0, 0);
|
||||
|
||||
|
@ -6854,7 +6852,7 @@ OGLDisplayLayer::OGLDisplayLayer(OGLVideoOutput *oglVO)
|
|||
else
|
||||
{
|
||||
glBindBufferARB(GL_ARRAY_BUFFER_ARB, _vboVertexID);
|
||||
glVertexPointer(2, GL_INT, 0, 0);
|
||||
glVertexPointer(2, GL_FLOAT, 0, 0);
|
||||
glBindBufferARB(GL_ARRAY_BUFFER_ARB, _vboTexCoordID);
|
||||
glTexCoordPointer(2, GL_FLOAT, 0, 0);
|
||||
|
||||
|
@ -7118,66 +7116,48 @@ void OGLDisplayLayer::SetFiltersPreferGPUOGL(bool preferGPU)
|
|||
glBindTexture(GL_TEXTURE_RECTANGLE_ARB, 0);
|
||||
}
|
||||
|
||||
uint16_t OGLDisplayLayer::GetDisplayWidth()
|
||||
{
|
||||
return this->_displayWidth;
|
||||
}
|
||||
|
||||
uint16_t OGLDisplayLayer::GetDisplayHeight()
|
||||
{
|
||||
return this->_displayHeight;
|
||||
}
|
||||
|
||||
void OGLDisplayLayer::SetDisplaySize(uint16_t w, uint16_t h)
|
||||
{
|
||||
this->_displayWidth = w;
|
||||
this->_displayHeight = h;
|
||||
this->GetNormalSize(this->_normalWidth, this->_normalHeight);
|
||||
this->_needUpdateVertices = true;
|
||||
}
|
||||
|
||||
int OGLDisplayLayer::GetMode()
|
||||
ClientDisplayMode OGLDisplayLayer::GetMode() const
|
||||
{
|
||||
return this->_displayMode;
|
||||
}
|
||||
|
||||
void OGLDisplayLayer::SetMode(int dispMode)
|
||||
void OGLDisplayLayer::SetMode(const ClientDisplayMode dispMode)
|
||||
{
|
||||
this->_displayMode = dispMode;
|
||||
this->GetNormalSize(this->_normalWidth, this->_normalHeight);
|
||||
OGLDisplayLayer::CalculateNormalSize(this->_displayMode, this->_displayOrientation, this->_gapScalar, this->_normalWidth, this->_normalHeight);
|
||||
this->_needUpdateVertices = true;
|
||||
}
|
||||
|
||||
int OGLDisplayLayer::GetOrientation()
|
||||
ClientDisplayLayout OGLDisplayLayer::GetOrientation() const
|
||||
{
|
||||
return this->_displayOrientation;
|
||||
}
|
||||
|
||||
void OGLDisplayLayer::SetOrientation(int dispOrientation)
|
||||
void OGLDisplayLayer::SetOrientation(ClientDisplayLayout dispOrientation)
|
||||
{
|
||||
this->_displayOrientation = dispOrientation;
|
||||
this->GetNormalSize(this->_normalWidth, this->_normalHeight);
|
||||
OGLDisplayLayer::CalculateNormalSize(this->_displayMode, this->_displayOrientation, this->_gapScalar, this->_normalWidth, this->_normalHeight);
|
||||
this->_needUpdateVertices = true;
|
||||
}
|
||||
|
||||
GLfloat OGLDisplayLayer::GetGapScalar()
|
||||
double OGLDisplayLayer::GetGapScalar() const
|
||||
{
|
||||
return this->_gapScalar;
|
||||
}
|
||||
|
||||
void OGLDisplayLayer::SetGapScalar(GLfloat theScalar)
|
||||
void OGLDisplayLayer::SetGapScalar(double theScalar)
|
||||
{
|
||||
this->_gapScalar = theScalar;
|
||||
this->GetNormalSize(this->_normalWidth, this->_normalHeight);
|
||||
OGLDisplayLayer::CalculateNormalSize(this->_displayMode, this->_displayOrientation, this->_gapScalar, this->_normalWidth, this->_normalHeight);
|
||||
this->_needUpdateVertices = true;
|
||||
}
|
||||
|
||||
GLfloat OGLDisplayLayer::GetRotation()
|
||||
double OGLDisplayLayer::GetRotation() const
|
||||
{
|
||||
return this->_rotation;
|
||||
}
|
||||
|
||||
void OGLDisplayLayer::SetRotation(GLfloat theRotation)
|
||||
void OGLDisplayLayer::SetRotation(double theRotation)
|
||||
{
|
||||
this->_rotation = theRotation;
|
||||
}
|
||||
|
@ -7192,12 +7172,12 @@ void OGLDisplayLayer::SetSourceDeposterize(bool useDeposterize)
|
|||
this->_useDeposterize = (this->_canUseShaderBasedFilters) ? useDeposterize : false;
|
||||
}
|
||||
|
||||
int OGLDisplayLayer::GetOrder()
|
||||
ClientDisplayOrder OGLDisplayLayer::GetOrder() const
|
||||
{
|
||||
return this->_displayOrder;
|
||||
}
|
||||
|
||||
void OGLDisplayLayer::SetOrder(int dispOrder)
|
||||
void OGLDisplayLayer::SetOrder(ClientDisplayOrder dispOrder)
|
||||
{
|
||||
this->_displayOrder = dispOrder;
|
||||
this->_needUpdateVertices = true;
|
||||
|
@ -7205,50 +7185,129 @@ void OGLDisplayLayer::SetOrder(int dispOrder)
|
|||
|
||||
void OGLDisplayLayer::UpdateVerticesOGL()
|
||||
{
|
||||
const size_t f = (this->_displayOrder == DS_DISPLAY_ORDER_MAIN_FIRST) ? 0 : 8;
|
||||
const GLfloat w = this->_displayWidth;
|
||||
const GLfloat h = this->_displayHeight;
|
||||
const GLfloat gap = (h * DS_DISPLAY_VERTICAL_GAP_TO_HEIGHT_RATIO) * this->_gapScalar / 2.0;
|
||||
const GLfloat w = this->_normalWidth / 2.0f;
|
||||
const GLfloat h = this->_normalHeight / 2.0f;
|
||||
const size_t f = (this->_displayOrder == ClientDisplayOrder_MainFirst) ? 0 : 8;
|
||||
|
||||
glBindBufferARB(GL_ARRAY_BUFFER_ARB, this->_vboVertexID);
|
||||
GLint *vtxBufferPtr = (GLint *)glMapBufferARB(GL_ARRAY_BUFFER_ARB, GL_WRITE_ONLY_ARB);
|
||||
GLfloat *vtxBufferPtr = (GLfloat *)glMapBufferARB(GL_ARRAY_BUFFER_ARB, GL_WRITE_ONLY_ARB);
|
||||
|
||||
if (this->_displayMode == DS_DISPLAY_TYPE_DUAL)
|
||||
if (this->_displayMode == ClientDisplayMode_Dual)
|
||||
{
|
||||
// displayOrder == DS_DISPLAY_ORDER_MAIN_FIRST
|
||||
if (this->_displayOrientation == DS_DISPLAY_ORIENTATION_VERTICAL)
|
||||
switch (this->_displayOrientation)
|
||||
{
|
||||
vtxBufferPtr[0+f] = -w/2; vtxBufferPtr[1+f] = h+gap; // Top display, top left
|
||||
vtxBufferPtr[2+f] = w/2; vtxBufferPtr[3+f] = h+gap; // Top display, top right
|
||||
vtxBufferPtr[4+f] = -w/2; vtxBufferPtr[5+f] = gap; // Top display, bottom left
|
||||
vtxBufferPtr[6+f] = w/2; vtxBufferPtr[7+f] = gap; // Top display, bottom right
|
||||
|
||||
vtxBufferPtr[8-f] = -w/2; vtxBufferPtr[9-f] = -gap; // Bottom display, top left
|
||||
vtxBufferPtr[10-f] = w/2; vtxBufferPtr[11-f] = -gap; // Bottom display, top right
|
||||
vtxBufferPtr[12-f] = -w/2; vtxBufferPtr[13-f] = -(h+gap); // Bottom display, bottom left
|
||||
vtxBufferPtr[14-f] = w/2; vtxBufferPtr[15-f] = -(h+gap); // Bottom display, bottom right
|
||||
}
|
||||
else // displayOrientationID == DS_DISPLAY_ORIENTATION_HORIZONTAL
|
||||
{
|
||||
vtxBufferPtr[0+f] = -(w+gap); vtxBufferPtr[1+f] = h/2; // Left display, top left
|
||||
vtxBufferPtr[2+f] = -gap; vtxBufferPtr[3+f] = h/2; // Left display, top right
|
||||
vtxBufferPtr[4+f] = -(w+gap); vtxBufferPtr[5+f] = -h/2; // Left display, bottom left
|
||||
vtxBufferPtr[6+f] = -gap; vtxBufferPtr[7+f] = -h/2; // Left display, bottom right
|
||||
|
||||
vtxBufferPtr[8-f] = gap; vtxBufferPtr[9-f] = h/2; // Right display, top left
|
||||
vtxBufferPtr[10-f] = w+gap; vtxBufferPtr[11-f] = h/2; // Right display, top right
|
||||
vtxBufferPtr[12-f] = gap; vtxBufferPtr[13-f] = -h/2; // Right display, bottom left
|
||||
vtxBufferPtr[14-f] = w+gap; vtxBufferPtr[15-f] = -h/2; // Right display, bottom right
|
||||
case ClientDisplayLayout_Horizontal:
|
||||
{
|
||||
vtxBufferPtr[0+f] = -w; vtxBufferPtr[1+f] = h; // Left display, top left
|
||||
vtxBufferPtr[2+f] = 0.0f; vtxBufferPtr[3+f] = h; // Left display, top right
|
||||
vtxBufferPtr[4+f] = -w; vtxBufferPtr[5+f] = -h; // Left display, bottom left
|
||||
vtxBufferPtr[6+f] = 0.0f; vtxBufferPtr[7+f] = -h; // Left display, bottom right
|
||||
|
||||
vtxBufferPtr[8-f] = 0.0f; vtxBufferPtr[9-f] = h; // Right display, top left
|
||||
vtxBufferPtr[10-f] = w; vtxBufferPtr[11-f] = h; // Right display, top right
|
||||
vtxBufferPtr[12-f] = 0.0f; vtxBufferPtr[13-f] = -h; // Right display, bottom left
|
||||
vtxBufferPtr[14-f] = w; vtxBufferPtr[15-f] = -h; // Right display, bottom right
|
||||
|
||||
memcpy(vtxBufferPtr + (2 * 8), vtxBufferPtr + (0 * 8), sizeof(GLfloat) * (2 * 8)); // Unused displays
|
||||
break;
|
||||
}
|
||||
|
||||
case ClientDisplayLayout_Hybrid_3_2:
|
||||
{
|
||||
vtxBufferPtr[0] = -w + (GLfloat)GPU_DISPLAY_WIDTH; vtxBufferPtr[1] = -h + (96.0f * 2.0f); // Minor top display, top left
|
||||
vtxBufferPtr[2] = w; vtxBufferPtr[3] = -h + (96.0f * 2.0f); // Minor top display, top right
|
||||
vtxBufferPtr[4] = -w + (GLfloat)GPU_DISPLAY_WIDTH; vtxBufferPtr[5] = -h + 96.0f; // Minor top display, bottom left
|
||||
vtxBufferPtr[6] = w; vtxBufferPtr[7] = -h + 96.0f; // Minor top display, bottom right
|
||||
|
||||
vtxBufferPtr[8] = -w + (GLfloat)GPU_DISPLAY_WIDTH; vtxBufferPtr[9] = -h + 96.0f; // Minor bottom display, top left
|
||||
vtxBufferPtr[10] = w; vtxBufferPtr[11] = -h + 96.0f; // Minor bottom display, top right
|
||||
vtxBufferPtr[12] = -w + (GLfloat)GPU_DISPLAY_WIDTH; vtxBufferPtr[13] = -h; // Minor bottom display, bottom left
|
||||
vtxBufferPtr[14] = w; vtxBufferPtr[15] = -h; // Minor bottom display, bottom right
|
||||
|
||||
vtxBufferPtr[16] = -w; vtxBufferPtr[17] = h; // Major display, top left
|
||||
vtxBufferPtr[18] = -w + (GLfloat)GPU_DISPLAY_WIDTH; vtxBufferPtr[19] = h; // Major display, top right
|
||||
vtxBufferPtr[20] = -w; vtxBufferPtr[21] = -h; // Major display, bottom left
|
||||
vtxBufferPtr[22] = -w + (GLfloat)GPU_DISPLAY_WIDTH; vtxBufferPtr[23] = -h; // Major display, bottom right
|
||||
|
||||
memcpy(vtxBufferPtr + (3 * 8), vtxBufferPtr + (2 * 8), sizeof(GLfloat) * (1 * 8)); // Major display (bottom screen)
|
||||
break;
|
||||
}
|
||||
|
||||
case ClientDisplayLayout_Hybrid_16_9:
|
||||
{
|
||||
const GLfloat g = (GLfloat)DS_DISPLAY_UNSCALED_GAP * this->_gapScalar * (this->_normalWidth - (GLfloat)GPU_DISPLAY_WIDTH) / (GLfloat)GPU_DISPLAY_WIDTH;
|
||||
|
||||
vtxBufferPtr[0] = -w + (GLfloat)GPU_DISPLAY_WIDTH; vtxBufferPtr[1] = -h + g + (64.0f * 2.0f); // Minor top display, top left
|
||||
vtxBufferPtr[2] = w; vtxBufferPtr[3] = -h + g + (64.0f * 2.0f); // Minor top display, top right
|
||||
vtxBufferPtr[4] = -w + (GLfloat)GPU_DISPLAY_WIDTH; vtxBufferPtr[5] = -h + g + 64.0f; // Minor top display, bottom left
|
||||
vtxBufferPtr[6] = w; vtxBufferPtr[7] = -h + g + 64.0f; // Minor top display, bottom right
|
||||
|
||||
vtxBufferPtr[8] = -w + (GLfloat)GPU_DISPLAY_WIDTH; vtxBufferPtr[9] = -h + 64.0f; // Minor bottom display, top left
|
||||
vtxBufferPtr[10] = w; vtxBufferPtr[11] = -h + 64.0f; // Minor bottom display, top right
|
||||
vtxBufferPtr[12] = -w + (GLfloat)GPU_DISPLAY_WIDTH; vtxBufferPtr[13] = -h; // Minor bottom display, bottom left
|
||||
vtxBufferPtr[14] = w; vtxBufferPtr[15] = -h; // Minor bottom display, bottom right
|
||||
|
||||
vtxBufferPtr[16] = -w; vtxBufferPtr[17] = h; // Major display, top left
|
||||
vtxBufferPtr[18] = -w + (GLfloat)GPU_DISPLAY_WIDTH; vtxBufferPtr[19] = h; // Major display, top right
|
||||
vtxBufferPtr[20] = -w; vtxBufferPtr[21] = -h; // Major display, bottom left
|
||||
vtxBufferPtr[22] = -w + (GLfloat)GPU_DISPLAY_WIDTH; vtxBufferPtr[23] = -h; // Major display, bottom right
|
||||
|
||||
memcpy(vtxBufferPtr + (3 * 8), vtxBufferPtr + (2 * 8), sizeof(GLfloat) * (1 * 8)); // Major display (bottom screen)
|
||||
break;
|
||||
}
|
||||
|
||||
case ClientDisplayLayout_Hybrid_16_10:
|
||||
{
|
||||
const GLfloat g = (GLfloat)DS_DISPLAY_UNSCALED_GAP * this->_gapScalar * (this->_normalWidth - (GLfloat)GPU_DISPLAY_WIDTH) / (GLfloat)GPU_DISPLAY_WIDTH;
|
||||
|
||||
vtxBufferPtr[0] = -w + (GLfloat)GPU_DISPLAY_WIDTH; vtxBufferPtr[1] = -h + g + (38.4f * 2.0f); // Minor top display, top left
|
||||
vtxBufferPtr[2] = w; vtxBufferPtr[3] = -h + g + (38.4f * 2.0f); // Minor top display, top right
|
||||
vtxBufferPtr[4] = -w + (GLfloat)GPU_DISPLAY_WIDTH; vtxBufferPtr[5] = -h + g + 38.4f; // Minor top display, bottom left
|
||||
vtxBufferPtr[6] = w; vtxBufferPtr[7] = -h + g + 38.4f; // Minor top display, bottom right
|
||||
|
||||
vtxBufferPtr[8] = -w + (GLfloat)GPU_DISPLAY_WIDTH; vtxBufferPtr[9] = -h + 38.4f; // Minor bottom display, top left
|
||||
vtxBufferPtr[10] = w; vtxBufferPtr[11] = -h + 38.4f; // Minor bottom display, top right
|
||||
vtxBufferPtr[12] = -w + (GLfloat)GPU_DISPLAY_WIDTH; vtxBufferPtr[13] = -h; // Minor bottom display, bottom left
|
||||
vtxBufferPtr[14] = w; vtxBufferPtr[15] = -h; // Minor bottom display, bottom right
|
||||
|
||||
vtxBufferPtr[16] = -w; vtxBufferPtr[17] = h; // Major display, top left
|
||||
vtxBufferPtr[18] = -w + (GLfloat)GPU_DISPLAY_WIDTH; vtxBufferPtr[19] = h; // Major display, top right
|
||||
vtxBufferPtr[20] = -w; vtxBufferPtr[21] = -h; // Major display, bottom left
|
||||
vtxBufferPtr[22] = -w + (GLfloat)GPU_DISPLAY_WIDTH; vtxBufferPtr[23] = -h; // Major display, bottom right
|
||||
|
||||
memcpy(vtxBufferPtr + (3 * 8), vtxBufferPtr + (2 * 8), sizeof(GLfloat) * (1 * 8)); // Major display (bottom screen)
|
||||
break;
|
||||
}
|
||||
|
||||
default: // Default to vertical orientation.
|
||||
{
|
||||
const GLfloat g = (GLfloat)DS_DISPLAY_UNSCALED_GAP * this->_gapScalar;
|
||||
|
||||
vtxBufferPtr[0+f] = -w; vtxBufferPtr[1+f] = h; // Top display, top left
|
||||
vtxBufferPtr[2+f] = w; vtxBufferPtr[3+f] = h; // Top display, top right
|
||||
vtxBufferPtr[4+f] = -w; vtxBufferPtr[5+f] = g/2.0f; // Top display, bottom left
|
||||
vtxBufferPtr[6+f] = w; vtxBufferPtr[7+f] = g/2.0f; // Top display, bottom right
|
||||
|
||||
vtxBufferPtr[8-f] = -w; vtxBufferPtr[9-f] = -g/2.0f; // Bottom display, top left
|
||||
vtxBufferPtr[10-f] = w; vtxBufferPtr[11-f] = -g/2.0f; // Bottom display, top right
|
||||
vtxBufferPtr[12-f] = -w; vtxBufferPtr[13-f] = -h; // Bottom display, bottom left
|
||||
vtxBufferPtr[14-f] = w; vtxBufferPtr[15-f] = -h; // Bottom display, bottom right
|
||||
|
||||
memcpy(vtxBufferPtr + (2 * 8), vtxBufferPtr + (0 * 8), sizeof(GLfloat) * (2 * 8)); // Unused displays
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
else // displayModeID == DS_DISPLAY_TYPE_MAIN || displayModeID == DS_DISPLAY_TYPE_TOUCH
|
||||
else // displayModeID == ClientDisplayMode_Main || displayModeID == ClientDisplayMode_Touch
|
||||
{
|
||||
vtxBufferPtr[0] = -w/2; vtxBufferPtr[1] = h/2; // First display, top left
|
||||
vtxBufferPtr[2] = w/2; vtxBufferPtr[3] = h/2; // First display, top right
|
||||
vtxBufferPtr[4] = -w/2; vtxBufferPtr[5] = -h/2; // First display, bottom left
|
||||
vtxBufferPtr[6] = w/2; vtxBufferPtr[7] = -h/2; // First display, bottom right
|
||||
vtxBufferPtr[0] = -w; vtxBufferPtr[1] = h; // First display, top left
|
||||
vtxBufferPtr[2] = w; vtxBufferPtr[3] = h; // First display, top right
|
||||
vtxBufferPtr[4] = -w; vtxBufferPtr[5] = -h; // First display, bottom left
|
||||
vtxBufferPtr[6] = w; vtxBufferPtr[7] = -h; // First display, bottom right
|
||||
|
||||
memcpy(vtxBufferPtr + (1 * 8), vtxBufferPtr + (0 * 8), sizeof(GLint) * (1 * 8)); // Second display
|
||||
memcpy(vtxBufferPtr + (1 * 8), vtxBufferPtr + (0 * 8), sizeof(GLfloat) * (1 * 8)); // Second display
|
||||
memcpy(vtxBufferPtr + (2 * 8), vtxBufferPtr + (0 * 8), sizeof(GLfloat) * (1 * 8)); // Unused display
|
||||
memcpy(vtxBufferPtr + (3 * 8), vtxBufferPtr + (0 * 8), sizeof(GLfloat) * (1 * 8)); // Unused display
|
||||
}
|
||||
|
||||
glUnmapBufferARB(GL_ARRAY_BUFFER_ARB);
|
||||
|
@ -7262,23 +7321,10 @@ bool OGLDisplayLayer::CanUseShaderBasedFilters()
|
|||
return this->_canUseShaderBasedFilters;
|
||||
}
|
||||
|
||||
void OGLDisplayLayer::GetNormalSize(double &w, double &h)
|
||||
void OGLDisplayLayer::GetNormalSize(double &outWidth, double &outHeight) const
|
||||
{
|
||||
if (this->_displayMode != DS_DISPLAY_TYPE_DUAL)
|
||||
{
|
||||
w = this->_displayWidth;
|
||||
h = this->_displayHeight;
|
||||
}
|
||||
else if (this->_displayOrientation == DS_DISPLAY_ORIENTATION_VERTICAL)
|
||||
{
|
||||
w = this->_displayWidth;
|
||||
h = this->_displayHeight * 2.0 + ((this->_displayHeight * DS_DISPLAY_VERTICAL_GAP_TO_HEIGHT_RATIO) * this->_gapScalar);
|
||||
}
|
||||
else
|
||||
{
|
||||
w = this->_displayWidth * 2.0 + ((this->_displayHeight * DS_DISPLAY_VERTICAL_GAP_TO_HEIGHT_RATIO) * this->_gapScalar);
|
||||
h = this->_displayHeight;
|
||||
}
|
||||
outWidth = this->_normalWidth;
|
||||
outHeight = this->_normalHeight;
|
||||
}
|
||||
|
||||
void OGLDisplayLayer::ResizeCPUPixelScalerOGL(const size_t srcWidthMain, const size_t srcHeightMain, const size_t srcWidthTouch, const size_t srcHeightTouch, const size_t scaleMultiply, const size_t scaleDivide)
|
||||
|
@ -7350,6 +7396,7 @@ void OGLDisplayLayer::UploadTransformationOGL()
|
|||
}
|
||||
|
||||
glViewport(0, 0, this->_viewportWidth, this->_viewportHeight);
|
||||
this->_needUpdateVertices = true;
|
||||
}
|
||||
|
||||
int OGLDisplayLayer::GetOutputFilter()
|
||||
|
@ -7750,8 +7797,8 @@ void OGLDisplayLayer::SetCPUPixelScalerOGL(const VideoFilterTypeID filterID)
|
|||
void OGLDisplayLayer::LoadFrameOGL(bool isMainSizeNative, bool isTouchSizeNative)
|
||||
{
|
||||
const bool isUsingCPUPixelScaler = (this->_pixelScaler != VideoFilterTypeID_None) && !this->_useShaderBasedPixelScaler;
|
||||
const bool loadMainScreen = (this->_displayMode == DS_DISPLAY_TYPE_MAIN) || (this->_displayMode == DS_DISPLAY_TYPE_DUAL);
|
||||
const bool loadTouchScreen = (this->_displayMode == DS_DISPLAY_TYPE_TOUCH) || (this->_displayMode == DS_DISPLAY_TYPE_DUAL);
|
||||
const bool loadMainScreen = (this->_displayMode == ClientDisplayMode_Main) || (this->_displayMode == ClientDisplayMode_Dual);
|
||||
const bool loadTouchScreen = (this->_displayMode == ClientDisplayMode_Touch) || (this->_displayMode == ClientDisplayMode_Dual);
|
||||
|
||||
this->_isTexVideoInputDataNative[0] = isMainSizeNative;
|
||||
this->_isTexVideoInputDataNative[1] = isTouchSizeNative;
|
||||
|
@ -7860,7 +7907,7 @@ void OGLDisplayLayer::ProcessOGL()
|
|||
GLfloat w1 = this->_texLoadedWidth[1];
|
||||
GLfloat h1 = this->_texLoadedHeight[1];
|
||||
|
||||
if (this->_isTexVideoInputDataNative[0] && (displayMode == DS_DISPLAY_TYPE_MAIN || displayMode == DS_DISPLAY_TYPE_DUAL))
|
||||
if (this->_isTexVideoInputDataNative[0] && (displayMode == ClientDisplayMode_Main || displayMode == ClientDisplayMode_Dual))
|
||||
{
|
||||
if (this->_useDeposterize)
|
||||
{
|
||||
|
@ -7873,7 +7920,7 @@ void OGLDisplayLayer::ProcessOGL()
|
|||
|
||||
if (isUsingCPUPixelScaler) // Hybrid CPU/GPU-based path (may cause a performance hit on pixel download)
|
||||
{
|
||||
if ( this->_isTexVideoInputDataNative[0] && ((displayMode == DS_DISPLAY_TYPE_MAIN) || (displayMode == DS_DISPLAY_TYPE_DUAL)) )
|
||||
if ( this->_isTexVideoInputDataNative[0] && ((displayMode == ClientDisplayMode_Main) || (displayMode == ClientDisplayMode_Dual)) )
|
||||
{
|
||||
this->_filterDeposterize[0]->DownloadDstBufferOGL(this->_vf[0]->GetSrcBufferPtr(), 0, this->_filterDeposterize[0]->GetSrcHeight());
|
||||
}
|
||||
|
@ -7905,7 +7952,7 @@ void OGLDisplayLayer::ProcessOGL()
|
|||
}
|
||||
}
|
||||
|
||||
if (this->_isTexVideoInputDataNative[1] && (displayMode == DS_DISPLAY_TYPE_TOUCH || displayMode == DS_DISPLAY_TYPE_DUAL))
|
||||
if (this->_isTexVideoInputDataNative[1] && (displayMode == ClientDisplayMode_Touch || displayMode == ClientDisplayMode_Dual))
|
||||
{
|
||||
if (this->_useDeposterize)
|
||||
{
|
||||
|
@ -7915,7 +7962,7 @@ void OGLDisplayLayer::ProcessOGL()
|
|||
|
||||
if (isUsingCPUPixelScaler) // Hybrid CPU/GPU-based path (may cause a performance hit on pixel download)
|
||||
{
|
||||
if ( this->_isTexVideoInputDataNative[1] && ((displayMode == DS_DISPLAY_TYPE_TOUCH) || (displayMode == DS_DISPLAY_TYPE_DUAL)) )
|
||||
if ( this->_isTexVideoInputDataNative[1] && ((displayMode == ClientDisplayMode_Touch) || (displayMode == ClientDisplayMode_Dual)) )
|
||||
{
|
||||
this->_filterDeposterize[1]->DownloadDstBufferOGL(this->_vf[1]->GetSrcBufferPtr(), 0, this->_filterDeposterize[1]->GetSrcHeight());
|
||||
}
|
||||
|
@ -7953,7 +8000,7 @@ void OGLDisplayLayer::ProcessOGL()
|
|||
|
||||
// Update the texture coordinates
|
||||
glBindBufferARB(GL_ARRAY_BUFFER_ARB, this->_vboTexCoordID);
|
||||
glBufferDataARB(GL_ARRAY_BUFFER_ARB, (2 * 8) * sizeof(GLfloat), NULL, GL_STREAM_DRAW_ARB);
|
||||
glBufferDataARB(GL_ARRAY_BUFFER_ARB, (4 * 8) * sizeof(GLfloat), NULL, GL_STREAM_DRAW_ARB);
|
||||
GLfloat *texCoordBufferPtr = (GLfloat *)glMapBufferARB(GL_ARRAY_BUFFER_ARB, GL_WRITE_ONLY_ARB);
|
||||
|
||||
texCoordBufferPtr[0] = 0.0f; texCoordBufferPtr[1] = 0.0f;
|
||||
|
@ -7966,6 +8013,8 @@ void OGLDisplayLayer::ProcessOGL()
|
|||
texCoordBufferPtr[12] = 0.0f; texCoordBufferPtr[13] = h1;
|
||||
texCoordBufferPtr[14] = w1; texCoordBufferPtr[15] = h1;
|
||||
|
||||
memcpy(texCoordBufferPtr + (2 * 8), texCoordBufferPtr + (0 * 8), sizeof(GLfloat) * (2 * 8));
|
||||
|
||||
glUnmapBufferARB(GL_ARRAY_BUFFER_ARB);
|
||||
glBindBufferARB(GL_ARRAY_BUFFER_ARB, 0);
|
||||
|
||||
|
@ -7985,23 +8034,42 @@ void OGLDisplayLayer::RenderOGL()
|
|||
// Enable vertex attributes
|
||||
glBindVertexArrayDESMUME(this->_vaoMainStatesID);
|
||||
|
||||
switch (this->GetMode())
|
||||
switch (this->_displayMode)
|
||||
{
|
||||
case DS_DISPLAY_TYPE_MAIN:
|
||||
case ClientDisplayMode_Main:
|
||||
glBindTexture(GL_TEXTURE_RECTANGLE_ARB, this->_texVideoOutputID[0]);
|
||||
glTexParameteri(GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_MIN_FILTER, this->_displayTexFilter[0]);
|
||||
glTexParameteri(GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_MAG_FILTER, this->_displayTexFilter[0]);
|
||||
glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
|
||||
break;
|
||||
|
||||
case DS_DISPLAY_TYPE_TOUCH:
|
||||
case ClientDisplayMode_Touch:
|
||||
glBindTexture(GL_TEXTURE_RECTANGLE_ARB, this->_texVideoOutputID[1]);
|
||||
glTexParameteri(GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_MIN_FILTER, this->_displayTexFilter[1]);
|
||||
glTexParameteri(GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_MAG_FILTER, this->_displayTexFilter[1]);
|
||||
glDrawArrays(GL_TRIANGLE_STRIP, 4, 4);
|
||||
break;
|
||||
|
||||
case DS_DISPLAY_TYPE_DUAL:
|
||||
case ClientDisplayMode_Dual:
|
||||
{
|
||||
const size_t majorDisplayTex = (this->_displayOrder == ClientDisplayOrder_MainFirst) ? 0 : 1;
|
||||
const size_t majorDisplayVtx = (this->_displayOrder == ClientDisplayOrder_MainFirst) ? 8 : 12;
|
||||
|
||||
switch (this->_displayOrientation)
|
||||
{
|
||||
case ClientDisplayLayout_Hybrid_3_2:
|
||||
case ClientDisplayLayout_Hybrid_16_9:
|
||||
case ClientDisplayLayout_Hybrid_16_10:
|
||||
glBindTexture(GL_TEXTURE_RECTANGLE_ARB, this->_texVideoOutputID[majorDisplayTex]);
|
||||
glTexParameteri(GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_MIN_FILTER, this->_displayTexFilter[majorDisplayTex]);
|
||||
glTexParameteri(GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_MAG_FILTER, this->_displayTexFilter[majorDisplayTex]);
|
||||
glDrawArrays(GL_TRIANGLE_STRIP, majorDisplayVtx, 4);
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
glBindTexture(GL_TEXTURE_RECTANGLE_ARB, this->_texVideoOutputID[0]);
|
||||
glTexParameteri(GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_MIN_FILTER, this->_displayTexFilter[0]);
|
||||
glTexParameteri(GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_MAG_FILTER, this->_displayTexFilter[0]);
|
||||
|
@ -8011,7 +8079,7 @@ void OGLDisplayLayer::RenderOGL()
|
|||
glTexParameteri(GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_MIN_FILTER, this->_displayTexFilter[1]);
|
||||
glTexParameteri(GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_MAG_FILTER, this->_displayTexFilter[1]);
|
||||
glDrawArrays(GL_TRIANGLE_STRIP, 4, 4);
|
||||
break;
|
||||
}
|
||||
|
||||
default:
|
||||
break;
|
||||
|
@ -8029,3 +8097,42 @@ void OGLDisplayLayer::FinishOGL()
|
|||
glFinishObjectAPPLE(GL_TEXTURE_RECTANGLE_ARB, (isUsingCPUPixelScaler) ? this->_texCPUFilterDstID[0] : ( (this->_isTexVideoInputDataNative[0]) ? this->_texVideoInputDataNativeID[0] : this->_texVideoInputDataCustomID[0]) );
|
||||
glFinishObjectAPPLE(GL_TEXTURE_RECTANGLE_ARB, (isUsingCPUPixelScaler) ? this->_texCPUFilterDstID[1] : ( (this->_isTexVideoInputDataNative[1]) ? this->_texVideoInputDataNativeID[1] : this->_texVideoInputDataCustomID[1]) );
|
||||
}
|
||||
|
||||
void OGLDisplayLayer::CalculateNormalSize(const ClientDisplayMode mode, const ClientDisplayLayout layout, const double gapScalar, double &outWidth, double &outHeight)
|
||||
{
|
||||
if (mode == ClientDisplayMode_Dual)
|
||||
{
|
||||
switch (layout)
|
||||
{
|
||||
case ClientDisplayLayout_Horizontal:
|
||||
outWidth = GPU_DISPLAY_WIDTH*2.0;
|
||||
outHeight = GPU_DISPLAY_HEIGHT;
|
||||
break;
|
||||
|
||||
case ClientDisplayLayout_Hybrid_3_2:
|
||||
outWidth = (float)GPU_DISPLAY_WIDTH + (128.0);
|
||||
outHeight = GPU_DISPLAY_HEIGHT;
|
||||
break;
|
||||
|
||||
case ClientDisplayLayout_Hybrid_16_9:
|
||||
outWidth = (float)GPU_DISPLAY_WIDTH + (64.0 * 4.0 / 3.0);
|
||||
outHeight = GPU_DISPLAY_HEIGHT;
|
||||
break;
|
||||
|
||||
case ClientDisplayLayout_Hybrid_16_10:
|
||||
outWidth = (float)GPU_DISPLAY_WIDTH + (51.2);
|
||||
outHeight = GPU_DISPLAY_HEIGHT;
|
||||
break;
|
||||
|
||||
default: // Default to vertical orientation.
|
||||
outWidth = GPU_DISPLAY_WIDTH;
|
||||
outHeight = GPU_DISPLAY_HEIGHT*2.0 + (DS_DISPLAY_UNSCALED_GAP*gapScalar);
|
||||
break;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
outWidth = GPU_DISPLAY_WIDTH;
|
||||
outHeight = GPU_DISPLAY_HEIGHT;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -43,7 +43,29 @@
|
|||
class OGLVideoOutput;
|
||||
struct NDSFrameInfo;
|
||||
|
||||
enum
|
||||
enum ClientDisplayMode
|
||||
{
|
||||
ClientDisplayMode_Main = 0,
|
||||
ClientDisplayMode_Touch,
|
||||
ClientDisplayMode_Dual
|
||||
};
|
||||
|
||||
enum ClientDisplayLayout
|
||||
{
|
||||
ClientDisplayLayout_Vertical = 0,
|
||||
ClientDisplayLayout_Horizontal = 1,
|
||||
ClientDisplayLayout_Hybrid_3_2 = 1000,
|
||||
ClientDisplayLayout_Hybrid_16_9 = 1001,
|
||||
ClientDisplayLayout_Hybrid_16_10 = 1002
|
||||
};
|
||||
|
||||
enum ClientDisplayOrder
|
||||
{
|
||||
ClientDisplayOrder_MainFirst = 0,
|
||||
ClientDisplayOrder_TouchFirst
|
||||
};
|
||||
|
||||
enum OutputFilterTypeID
|
||||
{
|
||||
OutputFilterTypeID_NearestNeighbor = 0,
|
||||
OutputFilterTypeID_Bilinear = 1,
|
||||
|
@ -251,7 +273,7 @@ public:
|
|||
void SetSourceDeposterize(bool useDeposterize);
|
||||
|
||||
bool CanUseShaderBasedFilters();
|
||||
void GetNormalSize(double &w, double &h);
|
||||
void GetNormalSize(double &w, double &h) const;
|
||||
|
||||
int GetOutputFilter();
|
||||
virtual void SetOutputFilterOGL(const int filterID);
|
||||
|
@ -411,15 +433,13 @@ protected:
|
|||
VideoFilter *_vf[2];
|
||||
GLuint _texCPUFilterDstID[2];
|
||||
|
||||
uint16_t _displayWidth;
|
||||
uint16_t _displayHeight;
|
||||
int _displayMode;
|
||||
int _displayOrder;
|
||||
int _displayOrientation;
|
||||
ClientDisplayMode _displayMode;
|
||||
ClientDisplayOrder _displayOrder;
|
||||
ClientDisplayLayout _displayOrientation;
|
||||
double _normalWidth;
|
||||
double _normalHeight;
|
||||
GLfloat _gapScalar;
|
||||
GLfloat _rotation;
|
||||
double _gapScalar;
|
||||
double _rotation;
|
||||
|
||||
GLuint _texLQ2xLUT;
|
||||
GLuint _texHQ2xLUT;
|
||||
|
@ -457,24 +477,21 @@ public:
|
|||
bool GetFiltersPreferGPU();
|
||||
void SetFiltersPreferGPUOGL(bool preferGPU);
|
||||
|
||||
uint16_t GetDisplayWidth();
|
||||
uint16_t GetDisplayHeight();
|
||||
void SetDisplaySize(uint16_t w, uint16_t h);
|
||||
int GetMode();
|
||||
void SetMode(int dispMode);
|
||||
int GetOrientation();
|
||||
void SetOrientation(int dispOrientation);
|
||||
int GetOrder();
|
||||
void SetOrder(int dispOrder);
|
||||
GLfloat GetGapScalar();
|
||||
void SetGapScalar(GLfloat theScalar);
|
||||
GLfloat GetRotation();
|
||||
void SetRotation(GLfloat theRotation);
|
||||
ClientDisplayMode GetMode() const;
|
||||
void SetMode(ClientDisplayMode dispMode);
|
||||
ClientDisplayLayout GetOrientation() const;
|
||||
void SetOrientation(ClientDisplayLayout dispOrientation);
|
||||
ClientDisplayOrder GetOrder() const;
|
||||
void SetOrder(ClientDisplayOrder dispOrder);
|
||||
double GetGapScalar() const;
|
||||
void SetGapScalar(double theScalar);
|
||||
double GetRotation() const;
|
||||
void SetRotation(double theRotation);
|
||||
bool GetSourceDeposterize();
|
||||
void SetSourceDeposterize(bool useDeposterize);
|
||||
|
||||
bool CanUseShaderBasedFilters();
|
||||
void GetNormalSize(double &w, double &h);
|
||||
void GetNormalSize(double &w, double &h) const;
|
||||
|
||||
int GetOutputFilter();
|
||||
virtual void SetOutputFilterOGL(const int filterID);
|
||||
|
@ -487,6 +504,8 @@ public:
|
|||
virtual void ProcessOGL();
|
||||
virtual void RenderOGL();
|
||||
virtual void FinishOGL();
|
||||
|
||||
static void CalculateNormalSize(const ClientDisplayMode mode, const ClientDisplayLayout layout, const double gapScalar, double &outWidth, double &outHeight);
|
||||
};
|
||||
|
||||
class OGLVideoOutput
|
||||
|
|
|
@ -445,34 +445,12 @@ enum
|
|||
MESSAGE_COPY_TO_PASTEBOARD
|
||||
};
|
||||
|
||||
/*
|
||||
DS DISPLAY TYPES
|
||||
*/
|
||||
enum
|
||||
{
|
||||
DS_DISPLAY_TYPE_MAIN = 0,
|
||||
DS_DISPLAY_TYPE_TOUCH,
|
||||
DS_DISPLAY_TYPE_DUAL
|
||||
};
|
||||
|
||||
enum
|
||||
{
|
||||
VIDEO_SOURCE_INTERNAL = 0,
|
||||
VIDEO_SOURCE_EMULATOR = 1
|
||||
};
|
||||
|
||||
enum
|
||||
{
|
||||
DS_DISPLAY_ORIENTATION_VERTICAL = 0,
|
||||
DS_DISPLAY_ORIENTATION_HORIZONTAL
|
||||
};
|
||||
|
||||
enum
|
||||
{
|
||||
DS_DISPLAY_ORDER_MAIN_FIRST = 0,
|
||||
DS_DISPLAY_ORDER_TOUCH_FIRST
|
||||
};
|
||||
|
||||
/*
|
||||
COCOA DS CORE STATES
|
||||
*/
|
||||
|
|
|
@ -108,9 +108,6 @@ typedef struct
|
|||
- (void) doFinishFrame;
|
||||
- (void) doDisplayModeChanged:(NSInteger)displayModeID;
|
||||
|
||||
@optional
|
||||
- (void) doDisplaySizeChanged:(NSSize)displaySize;
|
||||
|
||||
@end
|
||||
|
||||
@protocol CocoaDSDisplayVideoDelegate <CocoaDSDisplayDelegate>
|
||||
|
@ -149,8 +146,6 @@ typedef struct
|
|||
id <CocoaDSDisplayDelegate> delegate;
|
||||
NSSize displaySize;
|
||||
NSInteger displayMode;
|
||||
size_t _gpuCurrentWidth;
|
||||
size_t _gpuCurrentHeight;
|
||||
|
||||
uint32_t _receivedFrameIndex;
|
||||
uint32_t _currentReceivedFrameIndex;
|
||||
|
|
|
@ -32,6 +32,8 @@
|
|||
#include "../../metaspu/metaspu.h"
|
||||
#include "../../rtc.h"
|
||||
|
||||
#include "OGLDisplayOutput.h"
|
||||
|
||||
#import <Cocoa/Cocoa.h>
|
||||
|
||||
#undef BOOL
|
||||
|
@ -520,9 +522,7 @@
|
|||
spinlockCPULoadAverage = OS_SPINLOCK_INIT;
|
||||
|
||||
delegate = nil;
|
||||
displayMode = DS_DISPLAY_TYPE_DUAL;
|
||||
_gpuCurrentWidth = GPU_DISPLAY_WIDTH;
|
||||
_gpuCurrentHeight = GPU_DISPLAY_HEIGHT;
|
||||
displayMode = ClientDisplayMode_Dual;
|
||||
|
||||
_receivedFrameIndex = 0;
|
||||
_currentReceivedFrameIndex = 0;
|
||||
|
@ -547,7 +547,7 @@
|
|||
- (NSSize) displaySize
|
||||
{
|
||||
pthread_rwlock_rdlock(self.rwlockProducer);
|
||||
NSSize size = NSMakeSize((CGFloat)GPU->GetCustomFramebufferWidth(), (displayMode == DS_DISPLAY_TYPE_DUAL) ? (CGFloat)(GPU->GetCustomFramebufferHeight() * 2): (CGFloat)GPU->GetCustomFramebufferHeight());
|
||||
NSSize size = NSMakeSize((CGFloat)GPU->GetCustomFramebufferWidth(), (displayMode == ClientDisplayMode_Dual) ? (CGFloat)(GPU->GetCustomFramebufferHeight() * 2): (CGFloat)GPU->GetCustomFramebufferHeight());
|
||||
pthread_rwlock_unlock(self.rwlockProducer);
|
||||
|
||||
return size;
|
||||
|
@ -559,15 +559,15 @@
|
|||
|
||||
switch (displayModeID)
|
||||
{
|
||||
case DS_DISPLAY_TYPE_MAIN:
|
||||
case ClientDisplayMode_Main:
|
||||
newDispString = NSSTRING_DISPLAYMODE_MAIN;
|
||||
break;
|
||||
|
||||
case DS_DISPLAY_TYPE_TOUCH:
|
||||
case ClientDisplayMode_Touch:
|
||||
newDispString = NSSTRING_DISPLAYMODE_TOUCH;
|
||||
break;
|
||||
|
||||
case DS_DISPLAY_TYPE_DUAL:
|
||||
case ClientDisplayMode_Dual:
|
||||
newDispString = NSSTRING_DISPLAYMODE_DUAL;
|
||||
break;
|
||||
|
||||
|
@ -726,7 +726,7 @@
|
|||
const NSInteger dispMode = [self displayMode];
|
||||
|
||||
NSUInteger w = (NSUInteger)dispInfo.customWidth;
|
||||
NSUInteger h = (dispMode == DS_DISPLAY_TYPE_DUAL) ? (NSUInteger)(dispInfo.customHeight * 2) : (NSUInteger)dispInfo.customHeight;
|
||||
NSUInteger h = (dispMode == ClientDisplayMode_Dual) ? (NSUInteger)(dispInfo.customHeight * 2) : (NSUInteger)dispInfo.customHeight;
|
||||
|
||||
NSBitmapImageRep *imageRep = [[NSBitmapImageRep alloc] initWithBitmapDataPlanes:NULL
|
||||
pixelsWide:w
|
||||
|
@ -895,20 +895,6 @@
|
|||
pthread_rwlock_rdlock(self.rwlockProducer);
|
||||
|
||||
const NDSDisplayInfo &dispInfo = GPU->GetDisplayInfo();
|
||||
const uint16_t newGpuWidth = dispInfo.customWidth;
|
||||
const uint16_t newGpuHeight = dispInfo.customHeight;
|
||||
|
||||
if (newGpuWidth != _gpuCurrentWidth || newGpuHeight != _gpuCurrentHeight)
|
||||
{
|
||||
if (delegate != nil && [delegate respondsToSelector:@selector(doDisplaySizeChanged:)])
|
||||
{
|
||||
[(id<CocoaDSDisplayDelegate>)delegate doDisplaySizeChanged:NSMakeSize(newGpuWidth, newGpuHeight)];
|
||||
}
|
||||
|
||||
_gpuCurrentWidth = newGpuWidth;
|
||||
_gpuCurrentHeight = newGpuHeight;
|
||||
}
|
||||
|
||||
const bool isMainSizeNative = !dispInfo.didPerformCustomRender[NDSDisplayID_Main];
|
||||
const bool isTouchSizeNative = !dispInfo.didPerformCustomRender[NDSDisplayID_Touch];
|
||||
|
||||
|
|
|
@ -114,7 +114,7 @@ volatile bool execute = true;
|
|||
SPU_SetVolume(100);
|
||||
|
||||
// Set up the DS display
|
||||
displayMode = DS_DISPLAY_TYPE_DUAL;
|
||||
displayMode = ClientDisplayMode_Dual;
|
||||
displayRect = OEIntRectMake(0, 0, GPU_DISPLAY_WIDTH, GPU_DISPLAY_HEIGHT * 2);
|
||||
displayAspectRatio = OEIntSizeMake(2, 3);
|
||||
|
||||
|
@ -153,17 +153,17 @@ volatile bool execute = true;
|
|||
|
||||
switch (theMode)
|
||||
{
|
||||
case DS_DISPLAY_TYPE_MAIN:
|
||||
case ClientDisplayMode_Main:
|
||||
newDisplayRect = OEIntRectMake(0, 0, GPU_DISPLAY_WIDTH, GPU_DISPLAY_HEIGHT);
|
||||
newDisplayAspectRatio = OEIntSizeMake(4, 3);
|
||||
break;
|
||||
|
||||
case DS_DISPLAY_TYPE_TOUCH:
|
||||
case ClientDisplayMode_Touch:
|
||||
newDisplayRect = OEIntRectMake(0, GPU_DISPLAY_HEIGHT + 1, GPU_DISPLAY_WIDTH, GPU_DISPLAY_HEIGHT);
|
||||
newDisplayAspectRatio = OEIntSizeMake(4, 3);
|
||||
break;
|
||||
|
||||
case DS_DISPLAY_TYPE_DUAL:
|
||||
case ClientDisplayMode_Dual:
|
||||
newDisplayRect = OEIntRectMake(0, 0, GPU_DISPLAY_WIDTH, GPU_DISPLAY_HEIGHT * 2);
|
||||
newDisplayAspectRatio = OEIntSizeMake(2, 3);
|
||||
break;
|
||||
|
@ -312,16 +312,16 @@ volatile bool execute = true;
|
|||
{
|
||||
switch (displayMode)
|
||||
{
|
||||
case DS_DISPLAY_TYPE_MAIN:
|
||||
[self setDisplayMode:DS_DISPLAY_TYPE_TOUCH];
|
||||
case ClientDisplayMode_Main:
|
||||
[self setDisplayMode:ClientDisplayMode_Touch];
|
||||
break;
|
||||
|
||||
case DS_DISPLAY_TYPE_TOUCH:
|
||||
[self setDisplayMode:DS_DISPLAY_TYPE_DUAL];
|
||||
case ClientDisplayMode_Touch:
|
||||
[self setDisplayMode:ClientDisplayMode_Dual];
|
||||
break;
|
||||
|
||||
case DS_DISPLAY_TYPE_DUAL:
|
||||
[self setDisplayMode:DS_DISPLAY_TYPE_MAIN];
|
||||
case ClientDisplayMode_Dual:
|
||||
[self setDisplayMode:ClientDisplayMode_Main];
|
||||
break;
|
||||
|
||||
default:
|
||||
|
@ -386,15 +386,15 @@ volatile bool execute = true;
|
|||
|
||||
switch (dispMode)
|
||||
{
|
||||
case DS_DISPLAY_TYPE_MAIN:
|
||||
case ClientDisplayMode_Main:
|
||||
isTouchPressed = NO; // Reject touch input if showing only the main screen.
|
||||
break;
|
||||
|
||||
case DS_DISPLAY_TYPE_TOUCH:
|
||||
case ClientDisplayMode_Touch:
|
||||
isTouchPressed = YES;
|
||||
break;
|
||||
|
||||
case DS_DISPLAY_TYPE_DUAL:
|
||||
case ClientDisplayMode_Dual:
|
||||
isTouchPressed = YES;
|
||||
aPoint.y -= GPU_DISPLAY_HEIGHT; // Normalize the y-coordinate to the DS.
|
||||
break;
|
||||
|
|
Binary file not shown.
|
@ -1158,6 +1158,33 @@
|
|||
<reference key="NSMixedImage" ref="678976864"/>
|
||||
<int key="NSTag">1</int>
|
||||
</object>
|
||||
<object class="NSMenuItem" id="495023019">
|
||||
<reference key="NSMenu" ref="696122360"/>
|
||||
<string key="NSTitle">Hybrid (3:2)</string>
|
||||
<string key="NSKeyEquiv"/>
|
||||
<int key="NSMnemonicLoc">2147483647</int>
|
||||
<reference key="NSOnImage" ref="396634170"/>
|
||||
<reference key="NSMixedImage" ref="678976864"/>
|
||||
<int key="NSTag">1000</int>
|
||||
</object>
|
||||
<object class="NSMenuItem" id="360918133">
|
||||
<reference key="NSMenu" ref="696122360"/>
|
||||
<string key="NSTitle">Hybrid (16:9)</string>
|
||||
<string key="NSKeyEquiv"/>
|
||||
<int key="NSMnemonicLoc">2147483647</int>
|
||||
<reference key="NSOnImage" ref="396634170"/>
|
||||
<reference key="NSMixedImage" ref="678976864"/>
|
||||
<int key="NSTag">1001</int>
|
||||
</object>
|
||||
<object class="NSMenuItem" id="613673496">
|
||||
<reference key="NSMenu" ref="696122360"/>
|
||||
<string key="NSTitle">Hybrid (16:10)</string>
|
||||
<string key="NSKeyEquiv"/>
|
||||
<int key="NSMnemonicLoc">2147483647</int>
|
||||
<reference key="NSOnImage" ref="396634170"/>
|
||||
<reference key="NSMixedImage" ref="678976864"/>
|
||||
<int key="NSTag">1002</int>
|
||||
</object>
|
||||
</object>
|
||||
</object>
|
||||
</object>
|
||||
|
@ -4425,7 +4452,7 @@ L3d3dy5hZHZhbnNjZW5lLmNvbS9vZmZsaW5lL2RhdGFzL0FEVkFOc0NFbmVfUlRvb2xEUy56aXA</str
|
|||
<reference key="NSNextKeyView" ref="493465383"/>
|
||||
</object>
|
||||
</object>
|
||||
<string key="NSFrame">{{6, 218}, {431, 116}}</string>
|
||||
<string key="NSFrame">{{6, 238}, {431, 116}}</string>
|
||||
<reference key="NSSuperview" ref="698863500"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="610612997"/>
|
||||
|
@ -4467,13 +4494,13 @@ L3d3dy5hZHZhbnNjZW5lLmNvbS9vZmZsaW5lL2RhdGFzL0FEVkFOc0NFbmVfUlRvb2xEUy56aXA</str
|
|||
<object class="NSMatrix" id="534073839">
|
||||
<reference key="NSNextResponder" ref="713770080"/>
|
||||
<int key="NSvFlags">268</int>
|
||||
<string key="NSFrame">{{18, 14}, {100, 38}}</string>
|
||||
<string key="NSFrame">{{18, 14}, {126, 98}}</string>
|
||||
<reference key="NSSuperview" ref="713770080"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="1057767226"/>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<bool key="NSAllowsLogicalLayoutDirection">NO</bool>
|
||||
<int key="NSNumRows">2</int>
|
||||
<int key="NSNumRows">5</int>
|
||||
<int key="NSNumCols">1</int>
|
||||
<object class="NSMutableArray" key="NSCells">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
|
@ -4599,8 +4626,47 @@ QXBwbGUgQ29tcHV0ZXIsIEluYy4sIDIwMDUAAAAAA</bytes>
|
|||
<int key="NSPeriodicDelay">400</int>
|
||||
<int key="NSPeriodicInterval">75</int>
|
||||
</object>
|
||||
<object class="NSButtonCell" id="830803978">
|
||||
<int key="NSCellFlags">67108864</int>
|
||||
<int key="NSCellFlags2">0</int>
|
||||
<string key="NSContents">Hybrid (3:2)</string>
|
||||
<reference key="NSSupport" ref="462791774"/>
|
||||
<reference key="NSControlView" ref="534073839"/>
|
||||
<int key="NSTag">1000</int>
|
||||
<int key="NSButtonFlags">1211912448</int>
|
||||
<int key="NSButtonFlags2">0</int>
|
||||
<reference key="NSAlternateImage" ref="491083016"/>
|
||||
<int key="NSPeriodicDelay">400</int>
|
||||
<int key="NSPeriodicInterval">75</int>
|
||||
</object>
|
||||
<object class="NSButtonCell" id="17957965">
|
||||
<int key="NSCellFlags">67108864</int>
|
||||
<int key="NSCellFlags2">0</int>
|
||||
<string key="NSContents">Hybrid (16:9)</string>
|
||||
<reference key="NSSupport" ref="462791774"/>
|
||||
<reference key="NSControlView" ref="534073839"/>
|
||||
<int key="NSTag">1001</int>
|
||||
<int key="NSButtonFlags">1211912448</int>
|
||||
<int key="NSButtonFlags2">0</int>
|
||||
<reference key="NSAlternateImage" ref="491083016"/>
|
||||
<int key="NSPeriodicDelay">400</int>
|
||||
<int key="NSPeriodicInterval">75</int>
|
||||
</object>
|
||||
<object class="NSButtonCell" id="114580774">
|
||||
<int key="NSCellFlags">67108864</int>
|
||||
<int key="NSCellFlags2">0</int>
|
||||
<string key="NSContents">Hybrid (16:10)</string>
|
||||
<reference key="NSSupport" ref="462791774"/>
|
||||
<reference key="NSControlView" ref="534073839"/>
|
||||
<int key="NSTag">1002</int>
|
||||
<int key="NSButtonFlags">1211912448</int>
|
||||
<int key="NSButtonFlags2">0</int>
|
||||
<reference key="NSAlternateImage" ref="491083016"/>
|
||||
<int key="NSPeriodicDelay">400</int>
|
||||
<int key="NSPeriodicInterval">75</int>
|
||||
</object>
|
||||
</object>
|
||||
<string key="NSCellSize">{100, 18}</string>
|
||||
<string key="NSCellSize">{126, 18}</string>
|
||||
<string key="NSIntercellSpacing">{4, 2}</string>
|
||||
<int key="NSMatrixFlags">1151868928</int>
|
||||
<string key="NSCellClass">NSActionCell</string>
|
||||
|
@ -4715,13 +4781,13 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2
|
|||
<reference key="NSFont" ref="462791774"/>
|
||||
</object>
|
||||
</object>
|
||||
<string key="NSFrame">{{1, 1}, {194, 62}}</string>
|
||||
<string key="NSFrame">{{1, 1}, {194, 122}}</string>
|
||||
<reference key="NSSuperview" ref="405894970"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="534073839"/>
|
||||
</object>
|
||||
</object>
|
||||
<string key="NSFrame">{{15, 53}, {196, 78}}</string>
|
||||
<string key="NSFrame">{{15, 53}, {196, 138}}</string>
|
||||
<reference key="NSSuperview" ref="320484480"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="713770080"/>
|
||||
|
@ -5005,7 +5071,7 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2
|
|||
<reference key="NSNextKeyView" ref="399471743"/>
|
||||
</object>
|
||||
</object>
|
||||
<string key="NSFrame">{{218, 53}, {196, 78}}</string>
|
||||
<string key="NSFrame">{{218, 113}, {196, 78}}</string>
|
||||
<reference key="NSSuperview" ref="320484480"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="533349872"/>
|
||||
|
@ -5257,13 +5323,13 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2
|
|||
<int key="NSTextFieldAlignmentRectInsetsVersion">1</int>
|
||||
</object>
|
||||
</object>
|
||||
<string key="NSFrame">{{1, 1}, {429, 141}}</string>
|
||||
<string key="NSFrame">{{1, 1}, {429, 201}}</string>
|
||||
<reference key="NSSuperview" ref="367271593"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="405894970"/>
|
||||
</object>
|
||||
</object>
|
||||
<string key="NSFrame">{{6, 57}, {431, 157}}</string>
|
||||
<string key="NSFrame">{{6, 17}, {431, 217}}</string>
|
||||
<reference key="NSSuperview" ref="698863500"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="320484480"/>
|
||||
|
@ -6109,7 +6175,7 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2
|
|||
<string key="NSClassName">NSView</string>
|
||||
</object>
|
||||
<object class="NSCustomView" id="704316683">
|
||||
<reference key="NSNextResponder"/>
|
||||
<nil key="NSNextResponder"/>
|
||||
<int key="NSvFlags">268</int>
|
||||
<object class="NSMutableArray" key="NSSubviews">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
|
@ -6118,7 +6184,6 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2
|
|||
<int key="NSvFlags">268</int>
|
||||
<string key="NSFrame">{{163, 329}, {220, 26}}</string>
|
||||
<reference key="NSSuperview" ref="704316683"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="394747689"/>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSPopUpButtonCell" key="NSCell" id="29269565">
|
||||
|
@ -6178,7 +6243,6 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2
|
|||
<int key="NSvFlags">268</int>
|
||||
<string key="NSFrame">{{17, 335}, {144, 17}}</string>
|
||||
<reference key="NSSuperview" ref="704316683"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="193380617"/>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSTextFieldCell" key="NSCell" id="748093335">
|
||||
|
@ -6208,7 +6272,6 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2
|
|||
<int key="NSvFlags">268</int>
|
||||
<string key="NSFrame">{{16, 12}, {153, 18}}</string>
|
||||
<reference key="NSSuperview" ref="441129927"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="1070621411"/>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSButtonCell" key="NSCell" id="412966482">
|
||||
|
@ -6231,13 +6294,11 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2
|
|||
</object>
|
||||
<string key="NSFrame">{{1, 1}, {364, 38}}</string>
|
||||
<reference key="NSSuperview" ref="990175597"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="89239259"/>
|
||||
</object>
|
||||
</object>
|
||||
<string key="NSFrame">{{17, 209}, {366, 54}}</string>
|
||||
<reference key="NSSuperview" ref="704316683"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="441129927"/>
|
||||
<string key="NSOffsets">{0, 0}</string>
|
||||
<object class="NSTextFieldCell" key="NSTitleCell">
|
||||
|
@ -6269,7 +6330,6 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2
|
|||
<int key="NSvFlags">268</int>
|
||||
<string key="NSFrame">{{18, 15}, {180, 46}}</string>
|
||||
<reference key="NSSuperview" ref="611125211"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="329183370"/>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<bool key="NSAllowsLogicalLayoutDirection">NO</bool>
|
||||
|
@ -6518,7 +6578,6 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2
|
|||
<int key="NSvFlags">268</int>
|
||||
<string key="NSFrame">{{145, 10}, {204, 26}}</string>
|
||||
<reference key="NSSuperview" ref="611125211"/>
|
||||
<reference key="NSWindow"/>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSPopUpButtonCell" key="NSCell" id="289234889">
|
||||
<int key="NSCellFlags">-2076180416</int>
|
||||
|
@ -6586,13 +6645,11 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2
|
|||
</object>
|
||||
<string key="NSFrame">{{1, 1}, {364, 71}}</string>
|
||||
<reference key="NSSuperview" ref="379003821"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="996962843"/>
|
||||
</object>
|
||||
</object>
|
||||
<string key="NSFrame">{{17, 16}, {366, 87}}</string>
|
||||
<reference key="NSSuperview" ref="704316683"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="611125211"/>
|
||||
<string key="NSOffsets">{0, 0}</string>
|
||||
<object class="NSTextFieldCell" key="NSTitleCell">
|
||||
|
@ -6624,7 +6681,6 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2
|
|||
<int key="NSvFlags">268</int>
|
||||
<string key="NSFrame">{{18, 14}, {328, 58}}</string>
|
||||
<reference key="NSSuperview" ref="244021145"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="379003821"/>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<bool key="NSAllowsLogicalLayoutDirection">NO</bool>
|
||||
|
@ -6884,13 +6940,11 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2
|
|||
</object>
|
||||
<string key="NSFrame">{{1, 1}, {364, 82}}</string>
|
||||
<reference key="NSSuperview" ref="1070621411"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="945502088"/>
|
||||
</object>
|
||||
</object>
|
||||
<string key="NSFrame">{{17, 107}, {366, 98}}</string>
|
||||
<reference key="NSSuperview" ref="704316683"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="244021145"/>
|
||||
<string key="NSOffsets">{0, 0}</string>
|
||||
<object class="NSTextFieldCell" key="NSTitleCell">
|
||||
|
@ -6922,7 +6976,6 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2
|
|||
<int key="NSvFlags">268</int>
|
||||
<string key="NSFrame">{{40, 13}, {246, 21}}</string>
|
||||
<reference key="NSSuperview" ref="539280335"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="990570759"/>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSSliderCell" key="NSCell" id="577080553">
|
||||
|
@ -6946,7 +6999,6 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2
|
|||
<int key="NSvFlags">268</int>
|
||||
<string key="NSFrame">{{287, 17}, {62, 17}}</string>
|
||||
<reference key="NSSuperview" ref="539280335"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="990175597"/>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSTextFieldCell" key="NSCell" id="871591132">
|
||||
|
@ -7047,7 +7099,6 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2
|
|||
</object>
|
||||
<string key="NSFrame">{{18, 16}, {16, 16}}</string>
|
||||
<reference key="NSSuperview" ref="539280335"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="682389865"/>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSImageCell" key="NSCell" id="206851430">
|
||||
|
@ -7068,13 +7119,11 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2
|
|||
</object>
|
||||
<string key="NSFrame">{{1, 1}, {364, 44}}</string>
|
||||
<reference key="NSSuperview" ref="394747689"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="983879008"/>
|
||||
</object>
|
||||
</object>
|
||||
<string key="NSFrame">{{17, 267}, {366, 60}}</string>
|
||||
<reference key="NSSuperview" ref="704316683"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="539280335"/>
|
||||
<string key="NSOffsets">{0, 0}</string>
|
||||
<object class="NSTextFieldCell" key="NSTitleCell">
|
||||
|
@ -7093,13 +7142,11 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2
|
|||
</object>
|
||||
</object>
|
||||
<string key="NSFrameSize">{400, 373}</string>
|
||||
<reference key="NSSuperview"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="913591955"/>
|
||||
<string key="NSClassName">NSView</string>
|
||||
</object>
|
||||
<object class="NSCustomView" id="748902585">
|
||||
<reference key="NSNextResponder"/>
|
||||
<nil key="NSNextResponder"/>
|
||||
<int key="NSvFlags">268</int>
|
||||
<object class="NSMutableArray" key="NSSubviews">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
|
@ -7115,7 +7162,6 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2
|
|||
</object>
|
||||
<string key="NSFrame">{{13, 10}, {528, 441}}</string>
|
||||
<reference key="NSSuperview" ref="748902585"/>
|
||||
<reference key="NSWindow"/>
|
||||
<object class="NSMutableArray" key="NSTabViewItems">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<object class="NSTabViewItem" id="1008833987">
|
||||
|
@ -7140,7 +7186,6 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2
|
|||
<int key="NSvFlags">268</int>
|
||||
<string key="NSFrame">{{16, 32}, {198, 18}}</string>
|
||||
<reference key="NSSuperview" ref="330186328"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="689857730"/>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSButtonCell" key="NSCell" id="152711854">
|
||||
|
@ -7165,7 +7210,6 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2
|
|||
<int key="NSvFlags">268</int>
|
||||
<string key="NSFrame">{{16, 12}, {217, 18}}</string>
|
||||
<reference key="NSSuperview" ref="330186328"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="1034534989"/>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSButtonCell" key="NSCell" id="683227590">
|
||||
|
@ -7188,13 +7232,11 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2
|
|||
</object>
|
||||
<string key="NSFrame">{{1, 1}, {494, 58}}</string>
|
||||
<reference key="NSSuperview" ref="699930286"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="621197304"/>
|
||||
</object>
|
||||
</object>
|
||||
<string key="NSFrame">{{6, 301}, {496, 74}}</string>
|
||||
<reference key="NSSuperview" ref="461624007"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="330186328"/>
|
||||
<string key="NSOffsets">{0, 0}</string>
|
||||
<object class="NSTextFieldCell" key="NSTitleCell">
|
||||
|
@ -7226,7 +7268,6 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2
|
|||
<int key="NSvFlags">268</int>
|
||||
<string key="NSFrame">{{18, 14}, {165, 38}}</string>
|
||||
<reference key="NSSuperview" ref="16233"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="923192764"/>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<bool key="NSAllowsLogicalLayoutDirection">NO</bool>
|
||||
|
@ -7474,7 +7515,6 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2
|
|||
<int key="NSvFlags">268</int>
|
||||
<string key="NSFrame">{{242, 15}, {73, 17}}</string>
|
||||
<reference key="NSSuperview" ref="16233"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="156454980"/>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSTextFieldCell" key="NSCell" id="206408938">
|
||||
|
@ -7494,7 +7534,6 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2
|
|||
<int key="NSvFlags">268</int>
|
||||
<string key="NSFrame">{{320, 13}, {50, 22}}</string>
|
||||
<reference key="NSSuperview" ref="16233"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="636878832"/>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSTextFieldCell" key="NSCell" id="1033938841">
|
||||
|
@ -7573,7 +7612,6 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2
|
|||
<int key="NSvFlags">268</int>
|
||||
<string key="NSFrame">{{371, 10}, {19, 27}}</string>
|
||||
<reference key="NSSuperview" ref="16233"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="704971554"/>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSStepperCell" key="NSCell" id="401365162">
|
||||
|
@ -7592,13 +7630,11 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2
|
|||
</object>
|
||||
<string key="NSFrame">{{1, 1}, {494, 62}}</string>
|
||||
<reference key="NSSuperview" ref="1034534989"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="1002748640"/>
|
||||
</object>
|
||||
</object>
|
||||
<string key="NSFrame">{{6, 219}, {496, 78}}</string>
|
||||
<reference key="NSSuperview" ref="461624007"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="16233"/>
|
||||
<string key="NSOffsets">{0, 0}</string>
|
||||
<object class="NSTextFieldCell" key="NSTitleCell">
|
||||
|
@ -7630,7 +7666,6 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2
|
|||
<int key="NSvFlags">268</int>
|
||||
<string key="NSFrame">{{337, 17}, {141, 18}}</string>
|
||||
<reference key="NSSuperview" ref="987276464"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="808054783"/>
|
||||
<string key="NSReuseIdentifierKey">_NS:9</string>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
|
@ -7657,7 +7692,6 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2
|
|||
<int key="NSvFlags">268</int>
|
||||
<string key="NSFrame">{{16, 14}, {66, 17}}</string>
|
||||
<reference key="NSSuperview" ref="987276464"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="239207266"/>
|
||||
<string key="NSReuseIdentifierKey">_NS:526</string>
|
||||
<string key="NSHuggingPriority">{251, 750}</string>
|
||||
|
@ -7680,7 +7714,6 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2
|
|||
<int key="NSvFlags">268</int>
|
||||
<string key="NSFrame">{{86, 12}, {176, 26}}</string>
|
||||
<reference key="NSSuperview" ref="987276464"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="642300079"/>
|
||||
<string key="NSReuseIdentifierKey">_NS:9</string>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
|
@ -7706,7 +7739,6 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2
|
|||
<int key="NSvFlags">268</int>
|
||||
<string key="NSFrame">{{266, 14}, {52, 17}}</string>
|
||||
<reference key="NSSuperview" ref="987276464"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="773356702"/>
|
||||
<string key="NSReuseIdentifierKey">_NS:526</string>
|
||||
<string key="NSHuggingPriority">{251, 750}</string>
|
||||
|
@ -7781,7 +7813,6 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2
|
|||
<int key="NSvFlags">268</int>
|
||||
<string key="NSFrame">{{83, 36}, {26, 14}}</string>
|
||||
<reference key="NSSuperview" ref="987276464"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="943830921"/>
|
||||
<string key="NSReuseIdentifierKey">_NS:526</string>
|
||||
<string key="NSHuggingPriority">{251, 750}</string>
|
||||
|
@ -7804,7 +7835,6 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2
|
|||
<int key="NSvFlags">268</int>
|
||||
<string key="NSFrame">{{161, 36}, {26, 14}}</string>
|
||||
<reference key="NSSuperview" ref="987276464"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="636105289"/>
|
||||
<string key="NSReuseIdentifierKey">_NS:526</string>
|
||||
<string key="NSHuggingPriority">{251, 750}</string>
|
||||
|
@ -7827,7 +7857,6 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2
|
|||
<int key="NSvFlags">268</int>
|
||||
<string key="NSFrame">{{236, 36}, {31, 14}}</string>
|
||||
<reference key="NSSuperview" ref="987276464"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="90098197"/>
|
||||
<string key="NSReuseIdentifierKey">_NS:526</string>
|
||||
<string key="NSHuggingPriority">{251, 750}</string>
|
||||
|
@ -7848,14 +7877,12 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2
|
|||
</object>
|
||||
<string key="NSFrame">{{1, 1}, {494, 60}}</string>
|
||||
<reference key="NSSuperview" ref="704971554"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="765549650"/>
|
||||
<string key="NSReuseIdentifierKey">_NS:11</string>
|
||||
</object>
|
||||
</object>
|
||||
<string key="NSFrame">{{6, 139}, {496, 76}}</string>
|
||||
<reference key="NSSuperview" ref="461624007"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="987276464"/>
|
||||
<string key="NSReuseIdentifierKey">_NS:9</string>
|
||||
<string key="NSOffsets">{0, 0}</string>
|
||||
|
@ -7888,7 +7915,6 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2
|
|||
<int key="NSvFlags">268</int>
|
||||
<string key="NSFrame">{{16, 12}, {462, 18}}</string>
|
||||
<reference key="NSSuperview" ref="675831467"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="337932383"/>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSButtonCell" key="NSCell" id="830122320">
|
||||
|
@ -7911,13 +7937,11 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2
|
|||
</object>
|
||||
<string key="NSFrame">{{1, 1}, {494, 38}}</string>
|
||||
<reference key="NSSuperview" ref="808054783"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="361866954"/>
|
||||
</object>
|
||||
</object>
|
||||
<string key="NSFrame">{{6, 81}, {496, 54}}</string>
|
||||
<reference key="NSSuperview" ref="461624007"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="675831467"/>
|
||||
<string key="NSOffsets">{0, 0}</string>
|
||||
<object class="NSTextFieldCell" key="NSTitleCell">
|
||||
|
@ -7949,7 +7973,6 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2
|
|||
<int key="NSvFlags">268</int>
|
||||
<string key="NSFrame">{{16, 32}, {146, 18}}</string>
|
||||
<reference key="NSSuperview" ref="808083999"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="743074144"/>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSButtonCell" key="NSCell" id="340220192">
|
||||
|
@ -7974,7 +7997,6 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2
|
|||
<int key="NSvFlags">268</int>
|
||||
<string key="NSFrame">{{16, 12}, {118, 18}}</string>
|
||||
<reference key="NSSuperview" ref="808083999"/>
|
||||
<reference key="NSWindow"/>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSButtonCell" key="NSCell" id="16571944">
|
||||
<int key="NSCellFlags">67108864</int>
|
||||
|
@ -7996,13 +8018,11 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2
|
|||
</object>
|
||||
<string key="NSFrame">{{1, 1}, {494, 58}}</string>
|
||||
<reference key="NSSuperview" ref="337932383"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="396299062"/>
|
||||
</object>
|
||||
</object>
|
||||
<string key="NSFrame">{{6, 3}, {496, 74}}</string>
|
||||
<reference key="NSSuperview" ref="461624007"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="808083999"/>
|
||||
<string key="NSOffsets">{0, 0}</string>
|
||||
<object class="NSTextFieldCell" key="NSTitleCell">
|
||||
|
@ -8022,7 +8042,6 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2
|
|||
</object>
|
||||
<string key="NSFrame">{{10, 33}, {508, 395}}</string>
|
||||
<reference key="NSSuperview" ref="626099"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="699930286"/>
|
||||
</object>
|
||||
<string key="NSLabel">General Settings</string>
|
||||
|
@ -9369,8 +9388,6 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2
|
|||
</object>
|
||||
</object>
|
||||
<string key="NSFrameSize">{554, 465}</string>
|
||||
<reference key="NSSuperview"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="626099"/>
|
||||
<string key="NSClassName">NSView</string>
|
||||
</object>
|
||||
|
@ -22506,7 +22523,7 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2
|
|||
<nil key="NSUserInterfaceItemIdentifier"/>
|
||||
<string key="NSWindowContentMaxSize">{1.7976931348623157e+308, 1.7976931348623157e+308}</string>
|
||||
<object class="NSView" key="NSWindowView" id="729561310">
|
||||
<reference key="NSNextResponder"/>
|
||||
<nil key="NSNextResponder"/>
|
||||
<int key="NSvFlags">256</int>
|
||||
<object class="NSMutableArray" key="NSSubviews">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
|
@ -22525,7 +22542,6 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2
|
|||
<int key="NSvFlags">268</int>
|
||||
<string key="NSFrame">{{15, 109}, {206, 18}}</string>
|
||||
<reference key="NSSuperview" ref="372893695"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="59471532"/>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSButtonCell" key="NSCell" id="715693022">
|
||||
|
@ -22550,7 +22566,6 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2
|
|||
<int key="NSvFlags">268</int>
|
||||
<string key="NSFrame">{{185, 39}, {45, 19}}</string>
|
||||
<reference key="NSSuperview" ref="372893695"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="621607539"/>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSTextFieldCell" key="NSCell" id="424545719">
|
||||
|
@ -22635,7 +22650,6 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2
|
|||
<int key="NSvFlags">268</int>
|
||||
<string key="NSFrame">{{15, 41}, {165, 14}}</string>
|
||||
<reference key="NSSuperview" ref="372893695"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="914518661"/>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSTextFieldCell" key="NSCell" id="714807735">
|
||||
|
@ -22655,7 +22669,6 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2
|
|||
<int key="NSvFlags">268</int>
|
||||
<string key="NSFrame">{{15, 15}, {109, 14}}</string>
|
||||
<reference key="NSSuperview" ref="372893695"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="409790934"/>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSTextFieldCell" key="NSCell" id="212555065">
|
||||
|
@ -22675,7 +22688,6 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2
|
|||
<int key="NSvFlags">268</int>
|
||||
<string key="NSFrame">{{231, 34}, {19, 27}}</string>
|
||||
<reference key="NSSuperview" ref="372893695"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="36681890"/>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSStepperCell" key="NSCell" id="538492838">
|
||||
|
@ -22694,7 +22706,6 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2
|
|||
<int key="NSvFlags">268</int>
|
||||
<string key="NSFrame">{{15, 89}, {115, 18}}</string>
|
||||
<reference key="NSSuperview" ref="372893695"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="1021934313"/>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSButtonCell" key="NSCell" id="394241287">
|
||||
|
@ -22719,7 +22730,6 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2
|
|||
<int key="NSvFlags">268</int>
|
||||
<string key="NSFrame">{{15, 69}, {195, 18}}</string>
|
||||
<reference key="NSSuperview" ref="372893695"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="85361012"/>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSButtonCell" key="NSCell" id="473306767">
|
||||
|
@ -22744,7 +22754,6 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2
|
|||
<int key="NSvFlags">268</int>
|
||||
<string key="NSFrame">{{126, 10}, {124, 22}}</string>
|
||||
<reference key="NSSuperview" ref="372893695"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="226041199"/>
|
||||
<string key="NSReuseIdentifierKey">_NS:791</string>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
|
@ -22856,13 +22865,11 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2
|
|||
</object>
|
||||
<string key="NSFrame">{{1, 1}, {265, 134}}</string>
|
||||
<reference key="NSSuperview" ref="219189503"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="743170152"/>
|
||||
</object>
|
||||
</object>
|
||||
<string key="NSFrame">{{17, 107}, {267, 150}}</string>
|
||||
<reference key="NSSuperview" ref="729561310"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="372893695"/>
|
||||
<string key="NSOffsets">{0, 0}</string>
|
||||
<object class="NSTextFieldCell" key="NSTitleCell">
|
||||
|
@ -22884,7 +22891,6 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2
|
|||
<int key="NSvFlags">268</int>
|
||||
<string key="NSFrame">{{69, 7}, {162, 19}}</string>
|
||||
<reference key="NSSuperview" ref="729561310"/>
|
||||
<reference key="NSWindow"/>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSButtonCell" key="NSCell" id="837427736">
|
||||
<int key="NSCellFlags">-2080374784</int>
|
||||
|
@ -22916,7 +22922,6 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2
|
|||
<int key="NSvFlags">268</int>
|
||||
<string key="NSFrame">{{18, 14}, {107, 58}}</string>
|
||||
<reference key="NSSuperview" ref="909175549"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="353783913"/>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<bool key="NSAllowsLogicalLayoutDirection">NO</bool>
|
||||
|
@ -23176,13 +23181,11 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2
|
|||
</object>
|
||||
<string key="NSFrame">{{1, 1}, {265, 82}}</string>
|
||||
<reference key="NSSuperview" ref="299127137"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="229881229"/>
|
||||
</object>
|
||||
</object>
|
||||
<string key="NSFrame">{{17, 425}, {267, 98}}</string>
|
||||
<reference key="NSSuperview" ref="729561310"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="909175549"/>
|
||||
<string key="NSOffsets">{0, 0}</string>
|
||||
<object class="NSTextFieldCell" key="NSTitleCell">
|
||||
|
@ -23214,7 +23217,6 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2
|
|||
<int key="NSvFlags">268</int>
|
||||
<string key="NSFrame">{{15, 52}, {108, 18}}</string>
|
||||
<reference key="NSSuperview" ref="887816052"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="352871217"/>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSButtonCell" key="NSCell" id="109440671">
|
||||
|
@ -23239,7 +23241,6 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2
|
|||
<int key="NSvFlags">268</int>
|
||||
<string key="NSFrame">{{15, 32}, {135, 18}}</string>
|
||||
<reference key="NSSuperview" ref="887816052"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="606253351"/>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSButtonCell" key="NSCell" id="874032897">
|
||||
|
@ -23264,7 +23265,6 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2
|
|||
<int key="NSvFlags">268</int>
|
||||
<string key="NSFrame">{{15, 12}, {82, 18}}</string>
|
||||
<reference key="NSSuperview" ref="887816052"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="219189503"/>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSButtonCell" key="NSCell" id="67001337">
|
||||
|
@ -23289,7 +23289,6 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2
|
|||
<int key="NSvFlags">268</int>
|
||||
<string key="NSFrame">{{16, 119}, {112, 14}}</string>
|
||||
<reference key="NSSuperview" ref="887816052"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="759859011"/>
|
||||
<string key="NSReuseIdentifierKey">_NS:526</string>
|
||||
<string key="NSHuggingPriority">{251, 750}</string>
|
||||
|
@ -23312,7 +23311,6 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2
|
|||
<int key="NSvFlags">268</int>
|
||||
<string key="NSFrame">{{134, 117}, {48, 19}}</string>
|
||||
<reference key="NSSuperview" ref="887816052"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="1038713956"/>
|
||||
<string key="NSReuseIdentifierKey">_NS:9</string>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
|
@ -23391,7 +23389,6 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2
|
|||
<int key="NSvFlags">268</int>
|
||||
<string key="NSFrame">{{187, 113}, {19, 27}}</string>
|
||||
<reference key="NSSuperview" ref="887816052"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="357545381"/>
|
||||
<string key="NSReuseIdentifierKey">_NS:1592</string>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
|
@ -23412,7 +23409,6 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2
|
|||
<int key="NSvFlags">268</int>
|
||||
<string key="NSFrame">{{15, 72}, {137, 18}}</string>
|
||||
<reference key="NSSuperview" ref="887816052"/>
|
||||
<reference key="NSWindow"/>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSButtonCell" key="NSCell" id="120043682">
|
||||
<int key="NSCellFlags">67108864</int>
|
||||
|
@ -23436,7 +23432,6 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2
|
|||
<int key="NSvFlags">268</int>
|
||||
<string key="NSFrame">{{16, 96}, {127, 14}}</string>
|
||||
<reference key="NSSuperview" ref="887816052"/>
|
||||
<reference key="NSWindow"/>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSTextFieldCell" key="NSCell" id="675964218">
|
||||
<int key="NSCellFlags">68157504</int>
|
||||
|
@ -23455,7 +23450,6 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2
|
|||
<int key="NSvFlags">268</int>
|
||||
<string key="NSFrame">{{187, 89}, {19, 27}}</string>
|
||||
<reference key="NSSuperview" ref="887816052"/>
|
||||
<reference key="NSWindow"/>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSStepperCell" key="NSCell" id="940124700">
|
||||
<int key="NSCellFlags">67895328</int>
|
||||
|
@ -23475,7 +23469,6 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2
|
|||
<int key="NSvFlags">268</int>
|
||||
<string key="NSFrame">{{161, 96}, {19, 14}}</string>
|
||||
<reference key="NSSuperview" ref="887816052"/>
|
||||
<reference key="NSWindow"/>
|
||||
<string key="NSReuseIdentifierKey">_NS:4068</string>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSTextFieldCell" key="NSCell" id="1027435588">
|
||||
|
@ -23548,13 +23541,11 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2
|
|||
</object>
|
||||
<string key="NSFrame">{{1, 1}, {265, 144}}</string>
|
||||
<reference key="NSSuperview" ref="353783913"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="909638648"/>
|
||||
</object>
|
||||
</object>
|
||||
<string key="NSFrame">{{17, 261}, {267, 160}}</string>
|
||||
<reference key="NSSuperview" ref="729561310"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="887816052"/>
|
||||
<string key="NSOffsets">{0, 0}</string>
|
||||
<object class="NSTextFieldCell" key="NSTitleCell">
|
||||
|
@ -23586,7 +23577,6 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2
|
|||
<int key="NSvFlags">268</int>
|
||||
<string key="NSFrame">{{16, 32}, {192, 18}}</string>
|
||||
<reference key="NSSuperview" ref="633221410"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="412885015"/>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSButtonCell" key="NSCell" id="477056413">
|
||||
|
@ -23611,7 +23601,6 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2
|
|||
<int key="NSvFlags">268</int>
|
||||
<string key="NSFrame">{{16, 12}, {114, 18}}</string>
|
||||
<reference key="NSSuperview" ref="633221410"/>
|
||||
<reference key="NSWindow"/>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSButtonCell" key="NSCell" id="474989169">
|
||||
<int key="NSCellFlags">67108864</int>
|
||||
|
@ -23633,13 +23622,11 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2
|
|||
</object>
|
||||
<string key="NSFrame">{{1, 1}, {265, 58}}</string>
|
||||
<reference key="NSSuperview" ref="226041199"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="846174836"/>
|
||||
</object>
|
||||
</object>
|
||||
<string key="NSFrame">{{17, 29}, {267, 74}}</string>
|
||||
<reference key="NSSuperview" ref="729561310"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="633221410"/>
|
||||
<string key="NSOffsets">{0, 0}</string>
|
||||
<object class="NSTextFieldCell" key="NSTitleCell">
|
||||
|
@ -23658,8 +23645,6 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2
|
|||
</object>
|
||||
</object>
|
||||
<string key="NSFrameSize">{301, 543}</string>
|
||||
<reference key="NSSuperview"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="299127137"/>
|
||||
</object>
|
||||
<string key="NSScreenRect">{{0, 0}, {1920, 1177}}</string>
|
||||
|
@ -43318,6 +43303,30 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2
|
|||
</object>
|
||||
<int key="connectionID">10250</int>
|
||||
</object>
|
||||
<object class="IBConnectionRecord">
|
||||
<object class="IBActionConnection" key="connection">
|
||||
<string key="label">changeDisplayOrientation:</string>
|
||||
<reference key="source" ref="1014"/>
|
||||
<reference key="destination" ref="495023019"/>
|
||||
</object>
|
||||
<int key="connectionID">10254</int>
|
||||
</object>
|
||||
<object class="IBConnectionRecord">
|
||||
<object class="IBActionConnection" key="connection">
|
||||
<string key="label">changeDisplayOrientation:</string>
|
||||
<reference key="source" ref="1014"/>
|
||||
<reference key="destination" ref="360918133"/>
|
||||
</object>
|
||||
<int key="connectionID">10255</int>
|
||||
</object>
|
||||
<object class="IBConnectionRecord">
|
||||
<object class="IBActionConnection" key="connection">
|
||||
<string key="label">changeDisplayOrientation:</string>
|
||||
<reference key="source" ref="1014"/>
|
||||
<reference key="destination" ref="613673496"/>
|
||||
</object>
|
||||
<int key="connectionID">10257</int>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBMutableOrderedSet" key="objectRecords">
|
||||
<object class="NSArray" key="orderedObjects">
|
||||
|
@ -48894,6 +48903,9 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2
|
|||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<reference ref="172785222"/>
|
||||
<reference ref="593656559"/>
|
||||
<reference ref="495023019"/>
|
||||
<reference ref="360918133"/>
|
||||
<reference ref="613673496"/>
|
||||
</object>
|
||||
<reference key="parent" ref="993127302"/>
|
||||
</object>
|
||||
|
@ -49006,6 +49018,9 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2
|
|||
<reference ref="221667571"/>
|
||||
<reference ref="863837355"/>
|
||||
<reference ref="777091208"/>
|
||||
<reference ref="830803978"/>
|
||||
<reference ref="17957965"/>
|
||||
<reference ref="114580774"/>
|
||||
</object>
|
||||
<reference key="parent" ref="405894970"/>
|
||||
</object>
|
||||
|
@ -58625,6 +58640,36 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2
|
|||
<reference key="object" ref="919334514"/>
|
||||
<reference key="parent" ref="1027435588"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">10251</int>
|
||||
<reference key="object" ref="495023019"/>
|
||||
<reference key="parent" ref="696122360"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">10252</int>
|
||||
<reference key="object" ref="360918133"/>
|
||||
<reference key="parent" ref="696122360"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">10253</int>
|
||||
<reference key="object" ref="613673496"/>
|
||||
<reference key="parent" ref="696122360"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">10258</int>
|
||||
<reference key="object" ref="830803978"/>
|
||||
<reference key="parent" ref="534073839"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">10259</int>
|
||||
<reference key="object" ref="17957965"/>
|
||||
<reference key="parent" ref="534073839"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">10260</int>
|
||||
<reference key="object" ref="114580774"/>
|
||||
<reference key="parent" ref="534073839"/>
|
||||
</object>
|
||||
</object>
|
||||
</object>
|
||||
<object class="NSMutableDictionary" key="flattenedProperties">
|
||||
|
@ -58813,6 +58858,12 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2
|
|||
<string>10247.IBPluginDependency</string>
|
||||
<string>10247.IBViewBoundsToFrameTransform</string>
|
||||
<string>10248.IBPluginDependency</string>
|
||||
<string>10251.IBPluginDependency</string>
|
||||
<string>10252.IBPluginDependency</string>
|
||||
<string>10253.IBPluginDependency</string>
|
||||
<string>10258.IBAttributePlaceholdersKey</string>
|
||||
<string>10259.IBAttributePlaceholdersKey</string>
|
||||
<string>10260.IBAttributePlaceholdersKey</string>
|
||||
<string>1034.IBPluginDependency</string>
|
||||
<string>1035.IBPluginDependency</string>
|
||||
<string>1036.IBPluginDependency</string>
|
||||
|
@ -59833,9 +59884,11 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2
|
|||
<string>6161.IBPluginDependency</string>
|
||||
<string>6162.IBPluginDependency</string>
|
||||
<string>6168.IBPluginDependency</string>
|
||||
<string>6169.IBEditorWindowLastContentRect</string>
|
||||
<string>6169.IBPluginDependency</string>
|
||||
<string>6170.IBPluginDependency</string>
|
||||
<string>6171.IBPluginDependency</string>
|
||||
<string>6172.IBEditorWindowLastContentRect</string>
|
||||
<string>6172.IBPluginDependency</string>
|
||||
<string>6173.IBPluginDependency</string>
|
||||
<string>6174.IBPluginDependency</string>
|
||||
|
@ -60258,6 +60311,7 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2
|
|||
<string>7766.IBPluginDependency</string>
|
||||
<string>7767.IBPluginDependency</string>
|
||||
<string>7771.IBPluginDependency</string>
|
||||
<string>7772.IBEditorWindowLastContentRect</string>
|
||||
<string>7772.IBPluginDependency</string>
|
||||
<string>7773.IBPluginDependency</string>
|
||||
<string>7774.IBPluginDependency</string>
|
||||
|
@ -60309,6 +60363,7 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2
|
|||
<string>7837.IBPluginDependency</string>
|
||||
<string>7838.IBPluginDependency</string>
|
||||
<string>7839.IBPluginDependency</string>
|
||||
<string>784.IBEditorWindowLastContentRect</string>
|
||||
<string>784.IBPluginDependency</string>
|
||||
<string>7840.IBNumberFormatterBehaviorMetadataKey</string>
|
||||
<string>7840.IBNumberFormatterLocalizesFormatMetadataKey</string>
|
||||
|
@ -60348,6 +60403,7 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2
|
|||
<string>7875.IBPluginDependency</string>
|
||||
<string>7876.IBPluginDependency</string>
|
||||
<string>7879.IBPluginDependency</string>
|
||||
<string>788.IBEditorWindowLastContentRect</string>
|
||||
<string>788.IBPluginDependency</string>
|
||||
<string>7880.IBPluginDependency</string>
|
||||
<string>7881.IBPluginDependency</string>
|
||||
|
@ -61476,6 +61532,33 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2
|
|||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<object class="NSMutableDictionary">
|
||||
<string key="NS.key.0">ToolTip</string>
|
||||
<object class="IBToolTipAttribute" key="NS.object.0">
|
||||
<string key="name">ToolTip</string>
|
||||
<reference key="object" ref="830803978"/>
|
||||
<string key="toolTip">By default, arranges the NDS screens where the top and bottom screens are displayed on the right side, along with a larger major screen on the left side. This display orientation does not use the display separation setting. It is best suited for users who want a balanced size ratio between the minor screens and the major screen.</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="NSMutableDictionary">
|
||||
<string key="NS.key.0">ToolTip</string>
|
||||
<object class="IBToolTipAttribute" key="NS.object.0">
|
||||
<string key="name">ToolTip</string>
|
||||
<reference key="object" ref="17957965"/>
|
||||
<string key="toolTip">By default, arranges the NDS screens where the top and bottom screens are displayed on the right side, along with a larger major screen on the left side. This display orientation uses the display separation setting. It is best suited for host displays running a 16:9 resolution.</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="NSMutableDictionary">
|
||||
<string key="NS.key.0">ToolTip</string>
|
||||
<object class="IBToolTipAttribute" key="NS.object.0">
|
||||
<string key="name">ToolTip</string>
|
||||
<reference key="object" ref="114580774"/>
|
||||
<string key="toolTip">By default, arranges the NDS screens where the top and bottom screens are displayed on the right side, along with a larger major screen on the left side. This display orientation uses the display separation setting. It is best suited for host displays running a 16:10 resolution.</string>
|
||||
</object>
|
||||
</object>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
|
@ -61564,7 +61647,7 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2
|
|||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string>{{310, 296}, {489, 437}}</string>
|
||||
<string>{{585, 358}, {489, 437}}</string>
|
||||
<string>{796.5, 896.5}</string>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<object class="NSMutableDictionary">
|
||||
|
@ -61968,14 +62051,14 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2
|
|||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string>{{616, 836}, {512, 20}}</string>
|
||||
<string>{{411, 836}, {512, 20}}</string>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string>{{288, 552}, {315, 473}}</string>
|
||||
<string>{{685, 363}, {315, 473}}</string>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
|
@ -62446,7 +62529,7 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2
|
|||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string>{{603, 962}, {132, 63}}</string>
|
||||
<string>{{1000, 773}, {132, 63}}</string>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
|
@ -63191,9 +63274,11 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2
|
|||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string>{{1000, 673}, {151, 103}}</string>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string>{{1000, 713}, {178, 43}}</string>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
|
@ -63207,7 +63292,7 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2
|
|||
<object class="IBToolTipAttribute" key="NS.object.0">
|
||||
<string key="name">ToolTip</string>
|
||||
<reference key="object" ref="674773171"/>
|
||||
<string key="toolTip">If the display orientation is vertical, the main screen will be arranged above the touch screen by default. If the display layout is horizontal, the main screen will be arranged left of the touch screen by default.</string>
|
||||
<string key="toolTip">If the display orientation is Vertical, then the main screen will be arranged above the touch screen by default. If the display orientation is Horizontal, then the main screen will be arranged left of the touch screen by default. If the display orientation is Hybrid, then the main screen will be the major display by default.</string>
|
||||
</object>
|
||||
</object>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
|
@ -63216,7 +63301,7 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2
|
|||
<object class="IBToolTipAttribute" key="NS.object.0">
|
||||
<string key="name">ToolTip</string>
|
||||
<reference key="object" ref="1042209853"/>
|
||||
<string key="toolTip">If the display orientation is vertical, the touch screen will be arranged above the main screen by default. If the display layout is horizontal, the touch screen will be arranged left of the main screen by default.</string>
|
||||
<string key="toolTip">If the display orientation is Vertical, then the touch screen will be arranged above the main screen by default. If the display orientation is Horizontal, then the touch screen will be arranged left of the main screen by default. If the display orientation is Hybrid, then the touch screen will be the major display by default.</string>
|
||||
</object>
|
||||
</object>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
|
@ -63228,7 +63313,7 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2
|
|||
<object class="IBToolTipAttribute" key="NS.object.0">
|
||||
<string key="name">ToolTip</string>
|
||||
<reference key="object" ref="863837355"/>
|
||||
<string key="toolTip">Arranges the NDS screens where one screen is to the left of the other screen by default.</string>
|
||||
<string key="toolTip">By default, arranges the NDS screens where one screen is to the left of the other screen. This display orientation does not use the display separation setting.</string>
|
||||
</object>
|
||||
</object>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
|
@ -63237,7 +63322,7 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2
|
|||
<object class="IBToolTipAttribute" key="NS.object.0">
|
||||
<string key="name">ToolTip</string>
|
||||
<reference key="object" ref="777091208"/>
|
||||
<string key="toolTip">Arranges the NDS screens where one screen is above the other screen by default.</string>
|
||||
<string key="toolTip">By default, arranges the NDS screens where one screen is above the other screen, just like a hardware NDS. This display orientation uses the display separation setting.</string>
|
||||
</object>
|
||||
</object>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
|
@ -63771,6 +63856,7 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2
|
|||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string>{{1000, 603}, {118, 133}}</string>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
|
@ -63836,6 +63922,7 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2
|
|||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string>{{1000, 633}, {136, 163}}</string>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<integer value="1040"/>
|
||||
<boolean value="YES"/>
|
||||
|
@ -63917,6 +64004,7 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2
|
|||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string>{{1000, 713}, {70, 103}}</string>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
|
@ -64935,7 +65023,7 @@ y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp2
|
|||
</object>
|
||||
</object>
|
||||
<nil key="sourceID"/>
|
||||
<int key="maxID">10250</int>
|
||||
<int key="maxID">10260</int>
|
||||
</object>
|
||||
<object class="IBClassDescriber" key="IBDocument.Classes">
|
||||
<object class="NSMutableArray" key="referencedPartialClassDescriptions">
|
||||
|
|
|
@ -18,6 +18,7 @@
|
|||
#import <Cocoa/Cocoa.h>
|
||||
#import <OpenGL/OpenGL.h>
|
||||
#include <libkern/OSAtomic.h>
|
||||
#include <map>
|
||||
|
||||
#import "InputManager.h"
|
||||
#import "cocoa_output.h"
|
||||
|
@ -26,6 +27,7 @@
|
|||
@class EmuControllerDelegate;
|
||||
class OGLVideoOutput;
|
||||
|
||||
typedef std::map<int, bool> InitialTouchPressMap; // Key = An ID number of the host input, Value = Flag that indicates if the initial touch press was in the major display
|
||||
|
||||
// Subclass NSWindow for full screen windows so that we can override some methods.
|
||||
@interface DisplayFullScreenWindow : NSWindow
|
||||
|
@ -35,8 +37,8 @@ class OGLVideoOutput;
|
|||
@interface DisplayView : NSView <CocoaDSDisplayVideoDelegate, InputHIDManagerTarget>
|
||||
{
|
||||
InputManager *inputManager;
|
||||
InitialTouchPressMap *_initialTouchInMajorDisplay;
|
||||
OGLVideoOutput *oglv;
|
||||
CGFloat _displayRotation;
|
||||
BOOL canUseShaderBasedFilters;
|
||||
|
||||
BOOL _useVerticalSync;
|
||||
|
@ -54,6 +56,7 @@ class OGLVideoOutput;
|
|||
}
|
||||
|
||||
@property (retain) InputManager *inputManager;
|
||||
@property (readonly) NSSize normalSize;
|
||||
@property (readonly) BOOL canUseShaderBasedFilters;
|
||||
@property (assign) BOOL isHUDVisible;
|
||||
@property (assign) BOOL isHUDVideoFPSVisible;
|
||||
|
@ -70,12 +73,14 @@ class OGLVideoOutput;
|
|||
|
||||
- (void) setScaleFactor:(float)theScaleFactor;
|
||||
- (void) drawVideoFrame;
|
||||
- (NSPoint) dsPointFromEvent:(NSEvent *)theEvent;
|
||||
- (NSPoint) convertPointToDS:(NSPoint)clickLoc;
|
||||
- (NSPoint) dsPointFromEvent:(NSEvent *)theEvent inputID:(const NSInteger)inputID;
|
||||
- (NSPoint) convertPointToDS:(NSPoint)clickLoc inputID:(const NSInteger)inputID initialTouchPress:(BOOL)isInitialTouchPress;
|
||||
- (BOOL) handleKeyPress:(NSEvent *)theEvent keyPressed:(BOOL)keyPressed;
|
||||
- (BOOL) handleMouseButton:(NSEvent *)theEvent buttonPressed:(BOOL)buttonPressed;
|
||||
- (void) requestScreenshot:(NSURL *)fileURL fileType:(NSBitmapImageFileType)fileType;
|
||||
|
||||
+ (NSSize) calculateNormalSizeUsingMode:(const NSInteger)mode layout:(const NSInteger)layout gapScalar:(const double)gapScalar;
|
||||
|
||||
@end
|
||||
|
||||
#if MAC_OS_X_VERSION_MAX_ALLOWED > MAC_OS_X_VERSION_10_5
|
||||
|
|
|
@ -107,8 +107,8 @@ static std::unordered_map<NSScreen *, DisplayWindowController *> _screenMap; //
|
|||
|
||||
// These need to be initialized first since there are dependencies on these.
|
||||
_displayGap = 0.0;
|
||||
_displayMode = DS_DISPLAY_TYPE_DUAL;
|
||||
_displayOrientation = DS_DISPLAY_ORIENTATION_VERTICAL;
|
||||
_displayMode = ClientDisplayMode_Dual;
|
||||
_displayOrientation = ClientDisplayLayout_Vertical;
|
||||
|
||||
_minDisplayViewSize = NSMakeSize(GPU_DISPLAY_WIDTH, (GPU_DISPLAY_HEIGHT*2.0) + (DS_DISPLAY_UNSCALED_GAP*_displayGap));
|
||||
_isMinSizeNormal = YES;
|
||||
|
@ -202,7 +202,8 @@ static std::unordered_map<NSScreen *, DisplayWindowController *> _screenMap; //
|
|||
|
||||
// Resize the window.
|
||||
const NSSize oldBounds = [theWindow frame].size;
|
||||
const double constrainedScale = [self resizeWithTransform:[self normalSize] scalar:[self displayScale] rotation:newAngleDegrees];
|
||||
const NSSize newNormalSize = [DisplayView calculateNormalSizeUsingMode:[self displayMode] layout:[self displayOrientation] gapScalar:[self displayGap]];
|
||||
const double constrainedScale = [self resizeWithTransform:newNormalSize scalar:[self displayScale] rotation:newAngleDegrees];
|
||||
const NSSize newBounds = [theWindow frame].size;
|
||||
|
||||
OSSpinLockLock(&spinlockScale);
|
||||
|
@ -243,15 +244,15 @@ static std::unordered_map<NSScreen *, DisplayWindowController *> _screenMap; //
|
|||
|
||||
switch (displayModeID)
|
||||
{
|
||||
case DS_DISPLAY_TYPE_MAIN:
|
||||
case ClientDisplayMode_Main:
|
||||
modeString = NSSTRING_DISPLAYMODE_MAIN;
|
||||
break;
|
||||
|
||||
case DS_DISPLAY_TYPE_TOUCH:
|
||||
case ClientDisplayMode_Touch:
|
||||
modeString = NSSTRING_DISPLAYMODE_TOUCH;
|
||||
break;
|
||||
|
||||
case DS_DISPLAY_TYPE_DUAL:
|
||||
case ClientDisplayMode_Dual:
|
||||
modeString = NSSTRING_DISPLAYMODE_DUAL;
|
||||
break;
|
||||
|
||||
|
@ -263,8 +264,9 @@ static std::unordered_map<NSScreen *, DisplayWindowController *> _screenMap; //
|
|||
_displayMode = displayModeID;
|
||||
OSSpinLockUnlock(&spinlockDisplayMode);
|
||||
|
||||
const NSSize newNormalSize = [DisplayView calculateNormalSizeUsingMode:[self displayMode] layout:[self displayOrientation] gapScalar:[self displayGap]];
|
||||
[self setIsMinSizeNormal:[self isMinSizeNormal]];
|
||||
[self resizeWithTransform:[self normalSize] scalar:[self displayScale] rotation:[self displayRotation]];
|
||||
[self resizeWithTransform:newNormalSize scalar:[self displayScale] rotation:[self displayRotation]];
|
||||
|
||||
[CocoaDSUtil messageSendOneWayWithInteger:[[self cdsVideoOutput] receivePort] msgID:MESSAGE_CHANGE_DISPLAY_TYPE integerValue:displayModeID];
|
||||
}
|
||||
|
@ -284,10 +286,11 @@ static std::unordered_map<NSScreen *, DisplayWindowController *> _screenMap; //
|
|||
_displayOrientation = theOrientation;
|
||||
OSSpinLockUnlock(&spinlockDisplayOrientation);
|
||||
|
||||
if ([self displayMode] == DS_DISPLAY_TYPE_DUAL)
|
||||
if ([self displayMode] == ClientDisplayMode_Dual)
|
||||
{
|
||||
const NSSize newNormalSize = [DisplayView calculateNormalSizeUsingMode:[self displayMode] layout:[self displayOrientation] gapScalar:[self displayGap]];
|
||||
[self setIsMinSizeNormal:[self isMinSizeNormal]];
|
||||
[self resizeWithTransform:[self normalSize] scalar:[self displayScale] rotation:[self displayRotation]];
|
||||
[self resizeWithTransform:newNormalSize scalar:[self displayScale] rotation:[self displayRotation]];
|
||||
}
|
||||
|
||||
[CocoaDSUtil messageSendOneWayWithInteger:[[self cdsVideoOutput] receivePort] msgID:MESSAGE_CHANGE_DISPLAY_ORIENTATION integerValue:theOrientation];
|
||||
|
@ -326,10 +329,11 @@ static std::unordered_map<NSScreen *, DisplayWindowController *> _screenMap; //
|
|||
_displayGap = gapScalar;
|
||||
OSSpinLockUnlock(&spinlockDisplayGap);
|
||||
|
||||
if ([self displayMode] == DS_DISPLAY_TYPE_DUAL)
|
||||
if ([self displayMode] == ClientDisplayMode_Dual)
|
||||
{
|
||||
const NSSize newNormalSize = [DisplayView calculateNormalSizeUsingMode:[self displayMode] layout:[self displayOrientation] gapScalar:[self displayGap]];
|
||||
[self setIsMinSizeNormal:[self isMinSizeNormal]];
|
||||
[self resizeWithTransform:[self normalSize] scalar:[self displayScale] rotation:[self displayRotation]];
|
||||
[self resizeWithTransform:newNormalSize scalar:[self displayScale] rotation:[self displayRotation]];
|
||||
}
|
||||
|
||||
[CocoaDSUtil messageSendOneWayWithFloat:[[self cdsVideoOutput] receivePort] msgID:MESSAGE_CHANGE_DISPLAY_GAP floatValue:(float)gapScalar];
|
||||
|
@ -390,30 +394,8 @@ static std::unordered_map<NSScreen *, DisplayWindowController *> _screenMap; //
|
|||
|
||||
- (void) setIsMinSizeNormal:(BOOL)theState
|
||||
{
|
||||
OSSpinLockLock(&spinlockDisplayGap);
|
||||
const double gapScalar = _displayGap;
|
||||
OSSpinLockUnlock(&spinlockDisplayGap);
|
||||
|
||||
_isMinSizeNormal = theState;
|
||||
|
||||
if ([self displayMode] == DS_DISPLAY_TYPE_DUAL)
|
||||
{
|
||||
if ([self displayOrientation] == DS_DISPLAY_ORIENTATION_HORIZONTAL)
|
||||
{
|
||||
_minDisplayViewSize.width = GPU_DISPLAY_WIDTH*2.0 + (DS_DISPLAY_UNSCALED_GAP*gapScalar);
|
||||
_minDisplayViewSize.height = GPU_DISPLAY_HEIGHT;
|
||||
}
|
||||
else
|
||||
{
|
||||
_minDisplayViewSize.width = GPU_DISPLAY_WIDTH;
|
||||
_minDisplayViewSize.height = GPU_DISPLAY_HEIGHT*2.0 + (DS_DISPLAY_UNSCALED_GAP*gapScalar);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
_minDisplayViewSize.width = GPU_DISPLAY_WIDTH;
|
||||
_minDisplayViewSize.height = GPU_DISPLAY_HEIGHT;
|
||||
}
|
||||
_minDisplayViewSize = [DisplayView calculateNormalSizeUsingMode:[self displayMode] layout:[self displayOrientation] gapScalar:[self displayGap]];
|
||||
|
||||
if (!_isMinSizeNormal)
|
||||
{
|
||||
|
@ -505,21 +487,7 @@ static std::unordered_map<NSScreen *, DisplayWindowController *> _screenMap; //
|
|||
|
||||
- (NSSize) normalSize
|
||||
{
|
||||
NSSize normalSize = NSMakeSize(GPU_DISPLAY_WIDTH, GPU_DISPLAY_HEIGHT);
|
||||
|
||||
if ([self displayMode] == DS_DISPLAY_TYPE_DUAL)
|
||||
{
|
||||
if ([self displayOrientation] == DS_DISPLAY_ORIENTATION_VERTICAL)
|
||||
{
|
||||
normalSize.height = GPU_DISPLAY_HEIGHT * 2.0 + (DS_DISPLAY_UNSCALED_GAP * _displayGap);
|
||||
}
|
||||
else
|
||||
{
|
||||
normalSize.width = GPU_DISPLAY_WIDTH * 2.0 + (DS_DISPLAY_UNSCALED_GAP * _displayGap);
|
||||
}
|
||||
}
|
||||
|
||||
return normalSize;
|
||||
return [[self view] normalSize];
|
||||
}
|
||||
|
||||
- (BOOL) masterStatusBarState
|
||||
|
@ -965,7 +933,7 @@ static std::unordered_map<NSScreen *, DisplayWindowController *> _screenMap; //
|
|||
|
||||
- (IBAction) toggleNDSDisplays:(id)sender
|
||||
{
|
||||
[self setDisplayOrder:([self displayOrder] == DS_DISPLAY_ORDER_MAIN_FIRST) ? DS_DISPLAY_ORDER_TOUCH_FIRST : DS_DISPLAY_ORDER_MAIN_FIRST];
|
||||
[self setDisplayOrder:([self displayOrder] == ClientDisplayOrder_MainFirst) ? ClientDisplayOrder_TouchFirst : ClientDisplayOrder_MainFirst];
|
||||
}
|
||||
|
||||
- (IBAction) writeDefaultsDisplayRotation:(id)sender
|
||||
|
@ -1597,6 +1565,7 @@ static std::unordered_map<NSScreen *, DisplayWindowController *> _screenMap; //
|
|||
#endif
|
||||
|
||||
inputManager = nil;
|
||||
_initialTouchInMajorDisplay = new InitialTouchPressMap;
|
||||
|
||||
// Initialize the OpenGL context
|
||||
NSOpenGLPixelFormatAttribute attributes[] = {
|
||||
|
@ -1670,6 +1639,7 @@ static std::unordered_map<NSScreen *, DisplayWindowController *> _screenMap; //
|
|||
delete oglv;
|
||||
CGLSetCurrentContext(prevContext);
|
||||
|
||||
delete _initialTouchInMajorDisplay;
|
||||
[self setInputManager:nil];
|
||||
[context clearDrawable];
|
||||
[context release];
|
||||
|
@ -1679,6 +1649,16 @@ static std::unordered_map<NSScreen *, DisplayWindowController *> _screenMap; //
|
|||
|
||||
#pragma mark Dynamic Property Methods
|
||||
|
||||
- (NSSize) normalSize
|
||||
{
|
||||
double w;
|
||||
double h;
|
||||
|
||||
oglv->GetDisplayLayer()->GetNormalSize(w, h);
|
||||
|
||||
return NSMakeSize(w, h);
|
||||
}
|
||||
|
||||
- (void) setIsHUDVisible:(BOOL)theState
|
||||
{
|
||||
OSSpinLockLock(&spinlockIsHUDVisible);
|
||||
|
@ -1955,18 +1935,21 @@ static std::unordered_map<NSScreen *, DisplayWindowController *> _screenMap; //
|
|||
CGLFlushDrawable(cglDisplayContext);
|
||||
}
|
||||
|
||||
- (NSPoint) dsPointFromEvent:(NSEvent *)theEvent
|
||||
- (NSPoint) dsPointFromEvent:(NSEvent *)theEvent inputID:(const NSInteger)inputID
|
||||
{
|
||||
const NSEventType eventType = [theEvent type];
|
||||
const BOOL isInitialMouseDown = (eventType == NSLeftMouseDown) || (eventType == NSRightMouseDown) || (eventType == NSOtherMouseDown);
|
||||
|
||||
// Convert the clicked location from window coordinates, to view coordinates,
|
||||
// and finally to DS touchscreen coordinates.
|
||||
NSPoint touchLoc = [theEvent locationInWindow];
|
||||
touchLoc = [self convertPoint:touchLoc fromView:nil];
|
||||
touchLoc = [self convertPointToDS:touchLoc];
|
||||
touchLoc = [self convertPointToDS:touchLoc inputID:inputID initialTouchPress:isInitialMouseDown];
|
||||
|
||||
return touchLoc;
|
||||
}
|
||||
|
||||
- (NSPoint) convertPointToDS:(NSPoint)clickLoc
|
||||
- (NSPoint) convertPointToDS:(NSPoint)clickLoc inputID:(const NSInteger)inputID initialTouchPress:(BOOL)isInitialTouchPress
|
||||
{
|
||||
DisplayWindowController *windowController = (DisplayWindowController *)[[self window] delegate];
|
||||
|
||||
|
@ -1978,7 +1961,7 @@ static std::unordered_map<NSScreen *, DisplayWindowController *> _screenMap; //
|
|||
|
||||
const NSSize normalBounds = [windowController normalSize];
|
||||
const NSSize viewSize = [self bounds].size;
|
||||
const CGSize transformBounds = GetTransformedBounds(normalBounds.width, normalBounds.height, 1.0, _displayRotation);
|
||||
const CGSize transformBounds = GetTransformedBounds(normalBounds.width, normalBounds.height, 1.0, oglv->GetDisplayLayer()->GetRotation());
|
||||
const double s = GetMaxScalarInBounds(transformBounds.width, transformBounds.height, viewSize.width, viewSize.height);
|
||||
|
||||
CGPoint touchLoc = GetNormalPointFromTransformedPoint(clickLoc.x, clickLoc.y,
|
||||
|
@ -1988,19 +1971,51 @@ static std::unordered_map<NSScreen *, DisplayWindowController *> _screenMap; //
|
|||
viewAngle);
|
||||
|
||||
// Normalize the touch location to the DS.
|
||||
if ([windowController displayMode] == DS_DISPLAY_TYPE_DUAL)
|
||||
if ([windowController displayMode] == ClientDisplayMode_Dual)
|
||||
{
|
||||
const NSInteger theOrientation = [windowController displayOrientation];
|
||||
const NSInteger theOrder = [windowController displayOrder];
|
||||
const double gap = DS_DISPLAY_UNSCALED_GAP * [windowController displayGap];
|
||||
const ClientDisplayLayout theOrientation = (ClientDisplayLayout)[windowController displayOrientation];
|
||||
const ClientDisplayOrder theOrder = (ClientDisplayOrder)[windowController displayOrder];
|
||||
|
||||
if (theOrientation == DS_DISPLAY_ORIENTATION_VERTICAL && theOrder == DS_DISPLAY_ORDER_TOUCH_FIRST)
|
||||
switch (theOrientation)
|
||||
{
|
||||
touchLoc.y -= (GPU_DISPLAY_HEIGHT+gap);
|
||||
}
|
||||
else if (theOrientation == DS_DISPLAY_ORIENTATION_HORIZONTAL && theOrder == DS_DISPLAY_ORDER_MAIN_FIRST)
|
||||
{
|
||||
touchLoc.x -= (GPU_DISPLAY_WIDTH+gap);
|
||||
case ClientDisplayLayout_Horizontal:
|
||||
{
|
||||
if (theOrder == ClientDisplayOrder_MainFirst)
|
||||
{
|
||||
touchLoc.x -= GPU_DISPLAY_WIDTH;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
case ClientDisplayLayout_Hybrid_3_2:
|
||||
case ClientDisplayLayout_Hybrid_16_9:
|
||||
case ClientDisplayLayout_Hybrid_16_10:
|
||||
{
|
||||
if (isInitialTouchPress)
|
||||
{
|
||||
const bool isClickWithinMajorDisplay = (theOrder == ClientDisplayOrder_TouchFirst) && (touchLoc.x >= 0.0) && (touchLoc.x < 256.0);
|
||||
(*_initialTouchInMajorDisplay)[(int)inputID] = isClickWithinMajorDisplay;
|
||||
}
|
||||
|
||||
const bool handleClickInMajorDisplay = (*_initialTouchInMajorDisplay)[(int)inputID];
|
||||
if (!handleClickInMajorDisplay)
|
||||
{
|
||||
const double minorDisplayScale = (normalBounds.width - (GLfloat)GPU_DISPLAY_WIDTH) / (GLfloat)GPU_DISPLAY_WIDTH;
|
||||
touchLoc.x = (touchLoc.x - GPU_DISPLAY_WIDTH) / minorDisplayScale;
|
||||
touchLoc.y = touchLoc.y / minorDisplayScale;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
default: // Default to vertical orientation.
|
||||
{
|
||||
if (theOrder == ClientDisplayOrder_TouchFirst)
|
||||
{
|
||||
const double gap = DS_DISPLAY_UNSCALED_GAP * [windowController displayGap];
|
||||
touchLoc.y -= (GPU_DISPLAY_HEIGHT+gap);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -2097,12 +2112,13 @@ static std::unordered_map<NSScreen *, DisplayWindowController *> _screenMap; //
|
|||
|
||||
// Convert the clicked location from window coordinates, to view coordinates,
|
||||
// and finally to DS touchscreen coordinates.
|
||||
const NSPoint touchLoc = (displayModeID == DS_DISPLAY_TYPE_MAIN) ? NSMakePoint(0.0, 0.0) : [self dsPointFromEvent:theEvent];
|
||||
const InputAttributes inputAttr = InputManagerEncodeMouseButtonInput([theEvent buttonNumber], touchLoc, buttonPressed);
|
||||
const NSInteger buttonNumber = [theEvent buttonNumber];
|
||||
const NSPoint touchLoc = (displayModeID == ClientDisplayMode_Main) ? NSMakePoint(0.0, 0.0) : [self dsPointFromEvent:theEvent inputID:buttonNumber];
|
||||
const InputAttributes inputAttr = InputManagerEncodeMouseButtonInput(buttonNumber, touchLoc, buttonPressed);
|
||||
|
||||
if (buttonPressed && [theEvent window] != nil)
|
||||
{
|
||||
NSString *newStatusText = (displayModeID == DS_DISPLAY_TYPE_MAIN) ? [NSString stringWithFormat:@"%s:%s", inputAttr.deviceName, inputAttr.elementName] : [NSString stringWithFormat:@"%s:%s X:%i Y:%i", inputAttr.deviceName, inputAttr.elementName, (int)inputAttr.intCoordX, (int)inputAttr.intCoordY];
|
||||
NSString *newStatusText = (displayModeID == ClientDisplayMode_Main) ? [NSString stringWithFormat:@"%s:%s", inputAttr.deviceName, inputAttr.elementName] : [NSString stringWithFormat:@"%s:%s X:%i Y:%i", inputAttr.deviceName, inputAttr.elementName, (int)inputAttr.intCoordX, (int)inputAttr.intCoordY];
|
||||
[[windowController emuControl] setStatusText:newStatusText];
|
||||
}
|
||||
|
||||
|
@ -2369,9 +2385,7 @@ static std::unordered_map<NSScreen *, DisplayWindowController *> _screenMap; //
|
|||
}
|
||||
|
||||
- (void)doTransformView:(const DisplayOutputTransformData *)transformData
|
||||
{
|
||||
_displayRotation = (GLfloat)transformData->rotation;
|
||||
|
||||
{
|
||||
OGLDisplayLayer *display = oglv->GetDisplayLayer();
|
||||
display->SetRotation((GLfloat)transformData->rotation);
|
||||
[self doRedraw];
|
||||
|
@ -2385,26 +2399,19 @@ static std::unordered_map<NSScreen *, DisplayWindowController *> _screenMap; //
|
|||
CGLUnlockContext(cglDisplayContext);
|
||||
}
|
||||
|
||||
- (void)doDisplaySizeChanged:(NSSize)displaySize
|
||||
{
|
||||
OGLDisplayLayer *display = oglv->GetDisplayLayer();
|
||||
display->SetDisplaySize((uint16_t)displaySize.width, (uint16_t)displaySize.height);
|
||||
[self doRedraw];
|
||||
}
|
||||
|
||||
- (void)doDisplayModeChanged:(NSInteger)displayModeID
|
||||
{
|
||||
OGLDisplayLayer *display = oglv->GetDisplayLayer();
|
||||
display->SetMode(displayModeID);
|
||||
display->SetMode((ClientDisplayMode)displayModeID);
|
||||
[self doRedraw];
|
||||
}
|
||||
|
||||
- (void)doDisplayOrientationChanged:(NSInteger)displayOrientationID
|
||||
{
|
||||
OGLDisplayLayer *display = oglv->GetDisplayLayer();
|
||||
display->SetOrientation(displayOrientationID);
|
||||
display->SetOrientation((ClientDisplayLayout)displayOrientationID);
|
||||
|
||||
if (display->GetMode() == DS_DISPLAY_TYPE_DUAL)
|
||||
if (display->GetMode() == ClientDisplayMode_Dual)
|
||||
{
|
||||
[self doRedraw];
|
||||
}
|
||||
|
@ -2413,9 +2420,9 @@ static std::unordered_map<NSScreen *, DisplayWindowController *> _screenMap; //
|
|||
- (void)doDisplayOrderChanged:(NSInteger)displayOrderID
|
||||
{
|
||||
OGLDisplayLayer *display = oglv->GetDisplayLayer();
|
||||
display->SetOrder(displayOrderID);
|
||||
display->SetOrder((ClientDisplayOrder)displayOrderID);
|
||||
|
||||
if (display->GetMode() == DS_DISPLAY_TYPE_DUAL)
|
||||
if (display->GetMode() == ClientDisplayMode_Dual)
|
||||
{
|
||||
[self doRedraw];
|
||||
}
|
||||
|
@ -2426,12 +2433,22 @@ static std::unordered_map<NSScreen *, DisplayWindowController *> _screenMap; //
|
|||
OGLDisplayLayer *display = oglv->GetDisplayLayer();
|
||||
display->SetGapScalar((GLfloat)displayGapScalar);
|
||||
|
||||
if (display->GetMode() == DS_DISPLAY_TYPE_DUAL)
|
||||
if (display->GetMode() == ClientDisplayMode_Dual)
|
||||
{
|
||||
[self doRedraw];
|
||||
}
|
||||
}
|
||||
|
||||
+ (NSSize) calculateNormalSizeUsingMode:(const NSInteger)mode layout:(const NSInteger)layout gapScalar:(const double)gapScalar
|
||||
{
|
||||
double w;
|
||||
double h;
|
||||
|
||||
OGLDisplayLayer::CalculateNormalSize((ClientDisplayMode)mode, (ClientDisplayLayout)layout, gapScalar, w, h);
|
||||
|
||||
return NSMakeSize(w, h);
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
#pragma mark -
|
||||
|
|
|
@ -32,6 +32,7 @@
|
|||
#import "cocoa_rom.h"
|
||||
#import "cocoa_slot2.h"
|
||||
|
||||
#include "../OGLDisplayOutput.h"
|
||||
|
||||
@implementation EmuControllerDelegate
|
||||
|
||||
|
@ -1272,24 +1273,24 @@
|
|||
const NSInteger displayMode = [theWindow displayMode];
|
||||
switch (displayMode)
|
||||
{
|
||||
case DS_DISPLAY_TYPE_MAIN:
|
||||
[theWindow setDisplayMode:DS_DISPLAY_TYPE_TOUCH];
|
||||
case ClientDisplayMode_Main:
|
||||
[theWindow setDisplayMode:ClientDisplayMode_Touch];
|
||||
break;
|
||||
|
||||
case DS_DISPLAY_TYPE_TOUCH:
|
||||
[theWindow setDisplayMode:DS_DISPLAY_TYPE_MAIN];
|
||||
case ClientDisplayMode_Touch:
|
||||
[theWindow setDisplayMode:ClientDisplayMode_Main];
|
||||
break;
|
||||
|
||||
case DS_DISPLAY_TYPE_DUAL:
|
||||
case ClientDisplayMode_Dual:
|
||||
{
|
||||
const NSInteger displayOrder = [theWindow displayOrder];
|
||||
if (displayOrder == DS_DISPLAY_ORDER_MAIN_FIRST)
|
||||
if (displayOrder == ClientDisplayOrder_MainFirst)
|
||||
{
|
||||
[theWindow setDisplayOrder:DS_DISPLAY_ORDER_TOUCH_FIRST];
|
||||
[theWindow setDisplayOrder:ClientDisplayOrder_TouchFirst];
|
||||
}
|
||||
else
|
||||
{
|
||||
[theWindow setDisplayOrder:DS_DISPLAY_ORDER_MAIN_FIRST];
|
||||
[theWindow setDisplayOrder:ClientDisplayOrder_MainFirst];
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue