提交 347c86d9 编写于 作者: A Alexander Smorkalov

Windows RT related code cleanup.

Windows RT sample cleanup.
Video I/O code cleanup.
上级 91c51946
......@@ -558,7 +558,7 @@ CVAPI(int) cvGetCaptureDomain( CvCapture* capture);
/* "black box" video file writer structure */
typedef struct CvVideoWriter CvVideoWriter;
#define CV_FOURCC_MACRO(c1, c2, c3, c4) ((c1 & 255) + ((c2 & 255) << 8) + ((c3 & 255) << 16) + ((c4 & 255) << 24))
#define CV_FOURCC_MACRO(c1, c2, c3, c4) (((c1) & 255) + (((c2) & 255) << 8) + (((c3) & 255) << 16) + (((c4) & 255) << 24))
CV_INLINE int CV_FOURCC(char c1, char c2, char c3, char c4)
{
......
......@@ -203,12 +203,8 @@ private:
RawImage *ig_RIOut;
ImageGrabber(unsigned int deviceID, bool synchronous);
HRESULT CreateTopology(IMFMediaSource *pSource, IMFActivate *pSinkActivate, IMFTopology **ppTopo);
HRESULT AddSourceNode(
IMFTopology *pTopology,
IMFMediaSource *pSource,
IMFPresentationDescriptor *pPD,
IMFStreamDescriptor *pSD,
IMFTopologyNode **ppNode);
HRESULT AddSourceNode(IMFTopology *pTopology, IMFMediaSource *pSource,
IMFPresentationDescriptor *pPD, IMFStreamDescriptor *pSD, IMFTopologyNode **ppNode);
HRESULT AddOutputNode(IMFTopology *pTopology, IMFActivate *pActivate, DWORD dwId, IMFTopologyNode **ppNode);
// IUnknown methods
STDMETHODIMP QueryInterface(REFIID iid, void** ppv);
......@@ -886,7 +882,7 @@ FormatReader::~FormatReader(void)
{
}
#define CHECK_HR(x) if (FAILED(x)) { printf("Checking failed !!!\n"); goto done; }
#define CHECK_HR(x) if (FAILED(x)) { goto done; }
ImageGrabber::ImageGrabber(unsigned int deviceID, bool synchronous):
m_cRef(1),
......@@ -904,10 +900,8 @@ ImageGrabber::ImageGrabber(unsigned int deviceID, bool synchronous):
ImageGrabber::~ImageGrabber(void)
{
printf("ImageGrabber::~ImageGrabber()\n");
if (ig_pSession)
{
printf("ig_pSession->Shutdown()\n");
ig_pSession->Shutdown();
}
......@@ -947,31 +941,26 @@ HRESULT ImageGrabber::initImageGrabber(IMFMediaSource *pSource, GUID VideoFormat
hr = pSource->CreatePresentationDescriptor(&pPD);
if (FAILED(hr))
{
printf("Error creating CreatePresentationDescriptor()\n");
goto err;
}
BOOL fSelected;
hr = pPD->GetStreamDescriptorByIndex(0, &fSelected, &pSD);
if (FAILED(hr)) {
printf("Error GetStreamDescriptorByIndex()\n");
goto err;
}
hr = pSD->GetMediaTypeHandler(&pHandler);
if (FAILED(hr)) {
printf("Error GetMediaTypeHandler()\n");
goto err;
}
DWORD cTypes = 0;
hr = pHandler->GetMediaTypeCount(&cTypes);
if (FAILED(hr)) {
printf("Error GetMediaTypeCount()\n");
goto err;
}
if(cTypes > 0)
{
hr = pHandler->GetCurrentMediaType(&pCurrentType);
if (FAILED(hr)) {
printf("Error GetCurrentMediaType()\n");
goto err;
}
MT = FormatReader::Read(pCurrentType.Get());
......@@ -986,10 +975,6 @@ err:
{
sizeRawImage = MT.MF_MT_FRAME_SIZE * 4;
}
else
{
printf("Video format is not RBG 24/32!\n");
}
CHECK_HR(hr = RawImage::CreateInstance(&ig_RIFirst, sizeRawImage));
CHECK_HR(hr = RawImage::CreateInstance(&ig_RISecond, sizeRawImage));
ig_RIOut = ig_RISecond;
......@@ -1038,16 +1023,8 @@ HRESULT ImageGrabber::startGrabbing(void)
PropVariantInit(&var);
HRESULT hr = S_OK;
hr = ig_pSession->SetTopology(0, ig_pTopology);
if (FAILED(hr))
{
printf("Error: cannot set topology (status %u)\n", hr);
}
DPO->printOut(L"IMAGEGRABBER VIDEODEVICE %i: Start Grabbing of the images\n", ig_DeviceID);
hr = ig_pSession->Start(&GUID_NULL, &var);
if (FAILED(hr))
{
printf("Error: cannot start session (status %u)\n", hr);
}
for(;;)
{
HRESULT hrStatus = S_OK;
......@@ -1289,7 +1266,6 @@ STDMETHODIMP ImageGrabber::OnProcessSample(REFGUID guidMajorMediaType, DWORD dwS
(void)llSampleDuration;
(void)dwSampleSize;
//printf("ImageGrabber::OnProcessSample() -- begin\n");
HANDLE tmp[] = {ig_hFinish, ig_hFrameGrabbed, NULL};
DWORD status = WaitForMultipleObjects(2, tmp, FALSE, INFINITE);
......@@ -1310,8 +1286,6 @@ STDMETHODIMP ImageGrabber::OnProcessSample(REFGUID guidMajorMediaType, DWORD dwS
ig_RIOut = ig_RISecond;
}
//printf("ImageGrabber::OnProcessSample() -- end\n");
if (ig_Synchronous)
{
SetEvent(ig_hFrameReady);
......@@ -3128,11 +3102,7 @@ void CvCaptureFile_MSMF::close()
if (videoFileSource)
{
HRESULT hr = videoFileSource->Shutdown();
if (FAILED(hr))
{
printf("VideoCapture Closing failed!\n");
}
videoFileSource->Shutdown();
}
}
......@@ -3531,16 +3501,13 @@ bool CvVideoWriter_MSMF::open( const char* filename, int fourcc,
void CvVideoWriter_MSMF::close()
{
printf("VideoWriter::close()\n");
if (!initiated)
{
printf("VideoWriter was not Initialized\n");
return;
}
initiated = false;
HRESULT hr = sinkWriter->Finalize();
printf("sinkWriter Finalize status %u\n", hr);
MFShutdown();
}
......@@ -3569,7 +3536,6 @@ bool CvVideoWriter_MSMF::writeFrame(const IplImage* img)
HRESULT hr = WriteFrame(target, rtStart, rtDuration);
if (FAILED(hr))
{
printf("Private WriteFrame failed\n");
delete[] target;
return false;
}
......@@ -3600,7 +3566,6 @@ HRESULT CvVideoWriter_MSMF::InitializeSinkWriter(const char* filename)
// Set the output media type.
if (SUCCEEDED(hr))
{
printf("MFCreateSinkWriterFromURL is successfull\n");
hr = MFCreateMediaType(&mediaTypeOut);
}
if (SUCCEEDED(hr))
......@@ -3755,7 +3720,6 @@ HRESULT CvVideoWriter_MSMF::WriteFrame(DWORD *videoFrameBuffer, const LONGLONG&
CvVideoWriter* cvCreateVideoWriter_MSMF( const char* filename, int fourcc,
double fps, CvSize frameSize, int isColor )
{
printf("Creating Media Foundation VideoWriter\n");
CvVideoWriter_MSMF* writer = new CvVideoWriter_MSMF;
if( writer->open( filename, fourcc, fps, frameSize, isColor != 0 ))
return writer;
......
mkdir build
cd build
mkdir build_winrt_arm
cd build_winrt_arm
rem call "C:\Program Files\Microsoft Visual Studio 11.0\VC\bin\x86_arm\vcvarsx86_arm.bat"
cmake.exe -GNinja -DWITH_TBB=ON -DBUILD_TBB=ON -DCMAKE_BUILD_TYPE=Release -DWITH_FFMPEG=OFF -DBUILD_opencv_gpu=OFF -DBUILD_opencv_python=OFF -DCMAKE_TOOLCHAIN_FILE=..\..\winrt\arm.winrt.toolchain.cmake ..\..\..
cmake.exe -GNinja -DWITH_TBB=ON -DBUILD_TBB=ON -DCMAKE_BUILD_TYPE=Release -DWITH_FFMPEG=OFF -DBUILD_opencv_gpu=OFF -DBUILD_opencv_python=OFF -DCMAKE_TOOLCHAIN_FILE=..\winrt\arm.winrt.toolchain.cmake ..\..
/* this ALWAYS GENERATED file contains the definitions for the interfaces */
/* File created by MIDL compiler version 8.00.0595 */
/* at Wed Jun 19 03:47:25 2013
*/
/* Compiler settings for C:\Users\ASMORK~1\AppData\Local\Temp\OcvImageManipulations.idl-2e8e757e:
Oicf, W1, Zp8, env=Win32 (32b run), target_arch=X86 8.00.0595
protocol : dce , ms_ext, c_ext, robust
error checks: allocation ref bounds_check enum stub_data
VC __declspec() decoration level:
__declspec(uuid()), __declspec(selectany), __declspec(novtable)
DECLSPEC_UUID(), MIDL_INTERFACE()
*/
/* @@MIDL_FILE_HEADING( ) */
#pragma warning( disable: 4049 ) /* more than 64k source lines */
/* verify that the <rpcndr.h> version is high enough to compile this file*/
#ifndef __REQUIRED_RPCNDR_H_VERSION__
#define __REQUIRED_RPCNDR_H_VERSION__ 475
#endif
#include "rpc.h"
#include "rpcndr.h"
#ifndef __RPCNDR_H_VERSION__
#error this stub requires an updated version of <rpcndr.h>
#endif // __RPCNDR_H_VERSION__
#ifndef __OcvImageManipulations_h__
#define __OcvImageManipulations_h__
#if defined(_MSC_VER) && (_MSC_VER >= 1020)
#pragma once
#endif
#if defined(__cplusplus)
#if defined(__MIDL_USE_C_ENUM)
#define MIDL_ENUM enum
#else
#define MIDL_ENUM enum class
#endif
#endif
/* Forward Declarations */
/* header files for imported files */
#include "Windows.Media.h"
#ifdef __cplusplus
extern "C"{
#endif
/* interface __MIDL_itf_OcvImageManipulations_0000_0000 */
/* [local] */
#pragma warning(push)
#pragma warning(disable:4001)
#pragma once
#pragma warning(pop)
#ifndef RUNTIMECLASS_OcvTransform_OcvImageManipulations_DEFINED
#define RUNTIMECLASS_OcvTransform_OcvImageManipulations_DEFINED
extern const __declspec(selectany) WCHAR RuntimeClass_OcvTransform_OcvImageManipulations[] = L"OcvTransform.OcvImageManipulations";
#endif
/* interface __MIDL_itf_OcvImageManipulations_0000_0000 */
/* [local] */
extern RPC_IF_HANDLE __MIDL_itf_OcvImageManipulations_0000_0000_v0_0_c_ifspec;
extern RPC_IF_HANDLE __MIDL_itf_OcvImageManipulations_0000_0000_v0_0_s_ifspec;
/* Additional Prototypes for ALL interfaces */
/* end of Additional Prototypes */
#ifdef __cplusplus
}
#endif
#endif
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head><link rel="stylesheet" type="text/css" href="description/Combined.css,0:SearchBox,0:ImageSprite;/Areas/Epx/Themes/Metro/Content:0&amp;amp;hashKey=E778FABBB649835AFE4E73BCAC4F643A" xmlns="http://www.w3.org/1999/xhtml" />
<link rel="stylesheet" type="text/css" href="description/4ee0dda0-3e7e-46df-b80b-1692acc1c812Combined.css,0:ImageSprite;/Areas/Epx/Themes/Metro/Content:0&amp;amp;hashKey=B88AD897C8197B762EA1BF0238A60A9F" xmlns="http://www.w3.org/1999/xhtml" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Media capture using capture device sample</title>
<link href="description/Galleries.css" type="text/css" rel="Stylesheet" /><link href="description/Layout.css" type="text/css" rel="Stylesheet" /><link href="description/Brand.css" type="text/css" rel="Stylesheet" /><link href="description/c2e69f54-1c43-4037-b90b-5f775f1d945fBrand.css" type="text/css" rel="Stylesheet" />
<link href="description/iframedescription.css" rel="Stylesheet" type="text/css" />
<script src="description/offline.js" type="text/javascript"></script>
<style type="text/css">
#projectInfo {
overflow: auto;
}
#longDesc {
clear:both;
margin: 25px 0 10px 0;
}
#SampleIndexList{
margin-left: 15px;
}
</style>
</head>
<body>
<div id="offlineDescription">
<h1>Media capture using capture device sample</h1>
<br/>
<div id="projectInfo">
<div class="section">
<div class="itemBarLong tagsContainer">
<label for="Technologies">Technologies</label>
<div id="Technologies">
Windows Runtime
</div>
</div>
<div class="itemBarLong tagsContainer">
<label for="Topics">Topics</label>
<div id="Topics">
Devices and sensors
</div>
</div>
<div class="itemBarLong">
<label for="Platforms">Platforms</label>
<div id="Platforms">
Windows RT
</div>
</div>
<div class="itemBarLong">
<label for="Requirements">Requirements</label>
<div id="Requirements">
</div>
</div>
<div class="itemBar">
<label for="LastUpdated">Primary Language</label>
<div id="LastUpdated">en-US</div>
</div>
<div class="itemBar">
<label for="LastUpdated">Last Updated</label>
<div id="LastUpdated">4/9/2013</div>
</div>
<div class="itemBarLong">
<label for="License">License</label>
<div id="License">
<a href="license.rtf">MS-LPL</a></div>
</div>
<div class="itemBar">
<div class="viewonlinecont">
<a data-link="online" href="http://code.msdn.microsoft.com/windowsapps/Media-Capture-Sample-adf87622">View this sample online</a>
</div>
</div>
</div>
</div>
<script type="text/javascript">
function initializePage() {
var otherTabClass = 'otherTab';
var hiddenPreClass = 'hidden';
var htmlDecode = function(encodedData) {
var decodedData = "";
if (encodedData) {
var div = document.createElement('div');
div.innerHTML = encodedData;
decodedData = div.firstChild.nodeValue.replace( /\\r\\n/ig , '\r\n');
}
return decodedData;
};
Galleries.iterateElem(Galleries.findElem(null, 'div', 'scriptcode'), function (index, scriptBlock) {
var titleElem = Galleries.findElem(scriptBlock, 'div', 'title')[0];
var labelElems = Galleries.findElem(titleElem, 'span');
if (labelElems.length == 0) {
labelElems = titleElem;
}
var languageSpans = Galleries.findElem(scriptBlock, 'span', 'hidden');
var pres = Galleries.findElem(scriptBlock, 'pre');
if (languageSpans.length > 0 && pres.length > 1) {
Galleries.iterateElem(labelElems, function(index, elem) {
var codePre = pres[index];
var labelSpan = elem;
var languageSpan = languageSpans[index];
elem.code = codePre.innerHTML.replace( /(\r(\n)?)|((\r)?\n)/ig , '\\r\\n');
codePre.className = codePre.className.replace(hiddenPreClass, '');
languageSpan.parentNode.removeChild(languageSpan);
});
pres = Galleries.findElem(scriptBlock, 'pre');
Galleries.iterateElem(labelElems, function(index, elem) {
var codePre = pres[index];
var labelSpan = elem;
if (index == 0) {
scriptBlock.activeTab = 0;
}
else {
labelSpan.className += otherTabClass;
codePre.className += hiddenPreClass;
}
Galleries.attachEventHandler(labelSpan, 'click', function(e) {
var activeTab = scriptBlock.activeTab;
labelElems[activeTab].className += otherTabClass;
pres[activeTab].className += hiddenPreClass;
codePre.className = codePre.className.replace(hiddenPreClass, '');
labelSpan.className = labelSpan.className.replace(otherTabClass, '');
scriptBlock.activeTab = index;
});
});
var preview = Galleries.findElem(scriptBlock, 'div', 'preview');
if (preview.length == 0) {
preview.push(pres[pres.length - 1]);
}
Galleries.iterateElem(preview, function(index, elem) {
elem.parentNode.removeChild(elem);
});
if (window.clipboardData && clipboardData.setData) {
var copyLink = document.createElement('a');
copyLink.href = 'javascript:void(0);';
copyLink.className = 'copyCode';
copyLink.innerHTML = 'Copy Code';
Galleries.attachEventHandler(copyLink, 'click', function (e) {
clipboardData.setData("Text", htmlDecode(labelElems[scriptBlock.activeTab].code));
return false;
});
scriptBlock.insertBefore(copyLink, scriptBlock.childNodes[0]);
}
}
});
}
Galleries.onWindowLoad(function(){
initializePage();
});
</script>
<div id="longDesc">
<div id="mainSection">
<p>This sample demonstrates how to use the <a href="http://msdn.microsoft.com/library/windows/apps/BR241124">
<b>MediaCapture</b> </a>API to capture video, audio, and pictures from a capture device, such as a webcam.
</p>
<p>Specifically, this sample covers: </p>
<ul>
<li>Previewing video from a capture device, such as a webcam, connected to the computer.
</li><li>Capturing video from a capture device, such as a webcam, connected to the computer.
</li><li>Taking a picture from a capture device, such as a webcam, connected to the computer.
</li><li>Enumerating cameras connected to the computer. </li><li>Adding a video effect to a video. </li><li>Recording audio from a capture device connected to the computer. </li></ul>
<p></p>
<p>For more information on capturing video in your app, see <a href="http://msdn.microsoft.com/library/windows/apps/Hh465152">
Quickstart: capturing a photo or video using the camera dialog</a> and <a href="http://msdn.microsoft.com/library/windows/apps/Hh452791">
Quickstart: capturing video using the MediaCapture API</a>.</p>
<p class="note"><b>Important</b>&nbsp;&nbsp; </p>
<p class="note">This sample uses the Media Extension feature of Windows&nbsp;8 to add functionality to the Microsoft Media Foundation pipeline. A Media Extension consists of a hybrid object that implements both Component Object Model (COM) and Windows Runtime
interfaces. The COM interfaces interact with the Media Foundation pipeline. The Windows Runtime interfaces activate the component and interact with the Windows Store app.
</p>
<p class="note">In most situations, it is recommended that you use Visual C&#43;&#43; with Component Extensions (C&#43;&#43;/CX ) to interact with the Windows Runtime. But in the case of hybrid components that implement both COM and Windows Runtime interfaces, such as Media
Extensions, this is not possible. C&#43;&#43;/CX can only create Windows Runtime objects. So, for hybrid objects it is recommended that you use
<a href="http://go.microsoft.com/fwlink/p/?linkid=243149">Windows Runtime C&#43;&#43; Template Library</a> to interact with the Windows Runtime. Be aware that Windows Runtime C&#43;&#43; Template Library has limited support for implementing COM interfaces.</p>
<p></p>
<p>To obtain an evaluation copy of Windows&nbsp;8, go to <a href="http://go.microsoft.com/fwlink/p/?linkid=241655">
Windows&nbsp;8</a>.</p>
<p>To obtain an evaluation copy of Microsoft Visual Studio&nbsp;2012, go to <a href="http://go.microsoft.com/fwlink/p/?linkid=241656">
Visual Studio&nbsp;2012</a>.</p>
<h3><a id="related_topics"></a>Related topics</h3>
<dl><dt><a href="http://go.microsoft.com/fwlink/p/?LinkID=227694">Windows 8 app samples</a>
</dt><dt><b>Roadmaps</b> </dt><dt><a href="http://msdn.microsoft.com/en-us/library/windows/apps/Hh465134">Adding multimedia</a>
</dt><dt><a href="http://msdn.microsoft.com/library/windows/apps/Hh465156">Capturing or rendering audio, video, and images</a>
</dt><dt><a href="http://msdn.microsoft.com/en-us/library/windows/apps/Hh767284">Designing UX for apps</a>
</dt><dt><a href="http://msdn.microsoft.com/library/windows/apps/BR229583">Roadmap for apps using C# and Visual Basic</a>
</dt><dt><a href="http://msdn.microsoft.com/en-us/library/windows/apps/Hh700360">Roadmap for apps using C&#43;&#43;</a>
</dt><dt><a href="http://msdn.microsoft.com/en-us/library/windows/apps/Hh465037">Roadmap for apps using JavaScript</a>
</dt><dt><b>Tasks</b> </dt><dt><a href="http://msdn.microsoft.com/library/windows/apps/Hh465152">Quickstart: capturing a photo or video using the camera dialog</a>
</dt><dt><a href="http://msdn.microsoft.com/library/windows/apps/Hh452791">Quickstart: capturing video using the MediaCapture API</a>
</dt><dt><b>Reference</b> </dt><dt><a href="http://msdn.microsoft.com/en-us/library/windows/apps/BR211961"><b>AddEffectAsync</b>
</a></dt><dt><a href="http://msdn.microsoft.com/en-us/library/windows/apps/BR226592"><b>ClearEffectsAsync</b>
</a></dt><dt><a href="http://msdn.microsoft.com/library/windows/apps/BR241124"><b>MediaCapture</b>
</a></dt><dt><a href="http://msdn.microsoft.com/en-us/library/windows/apps/BR226581"><b>MediaCaptureSettings</b>
</a></dt><dt><a href="http://msdn.microsoft.com/en-us/library/windows/apps/Hh701026"><b>MediaEncodingProfile</b>
</a></dt><dt><a href="http://msdn.microsoft.com/en-us/library/windows/apps/Hh700863"><b>StartRecordToStorageFileAsync</b>
</a></dt><dt><b>Windows.Media.Capture</b> </dt></dl>
<h3>Operating system requirements</h3>
<table>
<tbody>
<tr>
<th>Client</th>
<td><dt>Windows&nbsp;8 </dt></td>
</tr>
<tr>
<th>Server</th>
<td><dt>Windows Server&nbsp;2012 </dt></td>
</tr>
</tbody>
</table>
<h3>Build the sample</h3>
<p></p>
<ol>
<li>Start Visual Studio Express&nbsp;2012 for Windows&nbsp;8 and select <b>File</b> &gt; <b>
Open</b> &gt; <b>Project/Solution</b>. </li><li>Go to the directory in which you unzipped the sample. Go to the directory named for the sample, and double-click the Visual Studio Express&nbsp;2012 for Windows&nbsp;8 Solution (.sln) file.
</li><li>Press F7 or use <b>Build</b> &gt; <b>Build Solution</b> to build the sample. </li></ol>
<p></p>
<h3>Run the sample</h3>
<p>To debug the app and then run it, press F5 or use <b>Debug</b> &gt; <b>Start Debugging</b>. To run the app without debugging, press Ctrl&#43;F5 or use
<b>Debug</b> &gt; <b>Start Without Debugging</b>.</p>
</div>
</div>
</div>
</body>
</html>
/* ***************************************************
Galleries.css - Common Structure
This is where we define common layout for structures that are truly close to common across the different
Galleries sites. To make sure this works we need to follow certain conventions.
1. Define each logical structure in its own section with its own comment block that gives the section
a Name, Description and defines the root element if one exists (i.e #someElement). Also, mark the closing block.
2. Indent styles in a section to represent if it is a child of a previous element.
i.e. #someDiv{
}
#someDiv ul {
}
3. Do not include brand specific information here like colors and fonts unless they are *really* common.
4. If there is an element that you know will be overridden in each brand stylesheet still include it here with an empty definition.
This will aid in knowing what section to override and what selectors to use.
i.e. #someSction a {
}
5. When you add a new section also update the Table of Contents below so that we have a quick overview of the sections
*****************************************************/
/****************************************************
Table of Contents
Global - global classes
FileAttachmentDisplay - The list of attached files under the editor
Eyebrow - The breadcrumb control at the top of the master page
Pager - The common paging control, used for browsing pages of search results
Profile User Card - Elements in the profile usercard control
SideNav - The navigation side bar that contains the search filters
*****************************************************/
/********************************
Name: Global
Root: none
Description: truly global classes
********************************/
body {
text-align: left;
direction: ltr;
}
img.rss {
background: url(../../../GlobalResources/Images/Rss.png) no-repeat;
background-position: 0px 0px;
height: 17px;
width: 17px;
}
/* End Global Section */
/********************************
Name: FileAttachmentDisplay
Root: #fileAttachmentDisplay
Description: The list of attached files under the editor
********************************/
#fileAttachmentDisplay {
}
#fileAttachmentDisplay .attachment {
margin-right: 10px;
float: left;
}
#fileAttachmentDisplay .attachment .displayAttachment {
padding: 0px 0 13px 0;
float: left;
}
#fileAttachmentDisplay .attachment .removeAttachment {
background-image: url('/Content/Common/delete.png');
display: block;
width: 16px;
height: 16px;
float: left;
}
/* End FileAttachmentDisplay Section */
/********************************
Name: Eyebrow
Root: .EyebrowContainer
Description: The breadcrumb control at the top of the master page
********************************/
.EyebrowContainer {
}
.EyebrowContainer div.EyebrowElement{
display:inline;
}
.EyebrowContainer .EyebrowElement{
font-weight:normal
}
.EyebrowContainer .EyebrowLeafLink{
color:#000;
}
/* End Eyebrow Section */
/********************************
Name: Pager
Root: #Pager
Description: The common paging control, used for browsing pages of search results
********************************/
#Pager {
}
#Pager div{
display:inline;
}
/* End Pager Section */
/********************************
Name: Profile User Card
Root: #dashboardPage #userCard
Description: Elements in the profile usercard control
********************************/
#dashboardPage #userCard .profile-usercard-inline {
margin: 5px 0 10px 0;
}
/* #dashboardPage #userCard .profile-usercard {
width: 288px;
}
/* End Profile User Card Section */
/********************************
Name: Discussion
Root: #DiscussionsTabPane
Description: Defines the layout of the dicussion
********************************/
#DiscussionsTabPane {
}
#DiscussionsTabPane .itemHidden
{
background: lightgrey;
}
#discussionListItem {
}
.discussion .postActions
{
float: right;
}
#discussionListItem .postItem
{
white-space: pre-wrap;
word-wrap: break-word;
font-size:1em;
}
/* End Discussion Section */
/********************************
Name: SearchDefaultLocale
Root: .searchDefaultLocale
Description: Defines the layout of the include english result checkbox on the Browse Page
********************************/
.searchDefaultLocale
{
float: right;
margin: 20px 0 0 5px;
}
.searchDefaultLocale input
{
vertical-align:top;
}
.searchDefaultLocale span
{
margin-left: -3px;
}
/*-------- End SearchDefaultLocale --------*/
/********************************
Name: SideNav
Root: #sideNav
Description: Defines the layout of the naviation elements on the side of the Browse Page
These represent the different filters like Code Language, Category and Tag
********************************/
#sideNav {
width: 250px;
vertical-align:top;
background-color:#eee;
}
#sideNav h3 {
}
#sideNav .section {
padding: 0 0 10px 0;
position: relative;
}
#sideNav .section a {
}
#sideNav .section a:hover {
}
#sideNav .section > div {
padding:5px 5px 5px 0;
line-height:150%;
}
#sideNav .section ul {
list-style-type:none;
padding:0px;
margin:0px;
}
#sideNav .section ul li {
position: relative;
padding: 5px 5px 5px 0;
}
#sideNav .section ul li .selectedFilter {
float: left;
padding-right: 5px;
}
#sideNav .section div.itemCount {
float: right;
}
#sideNav .section form input[ type = "checkbox"] {
margin: 0px 4px 0px 0px;
vertical-align: middle;
}
/* End SideNav Section */
/*----------- Contribution Logos *******/
.contributionLogo {
float: left;
position: relative;
margin-right: 6px;
}
.logo_visualstudio {
background: transparent url('../common/logos/visualstudio.png') no-repeat;
width: 23px;
height: 12px;
margin-top: 3px;
}
.logo_allinonecode {
background: transparent url('../common/logos/1code.png') no-repeat;
width: 14px;
height: 16px;
}
.logo_exchange {
background: transparent url('../common/logos/exchange.png') no-repeat;
width: 14px;
height: 16px;
}
.logo_ie {
background: transparent url('../common/logos/ie.png') no-repeat;
width: 16px;
height: 16px;
}
.logo_office {
background: transparent url('../common/logos/office.png') no-repeat;
width: 17px;
height: 16px;
}
.logo_windows {
background: transparent url('../common/logos/windows.png') no-repeat;
width: 17px;
height: 16px;
}
.logo_azure {
background: transparent url('../common/logos/windowsazuredark.png') no-repeat;
width: 16px;
height: 16px;
}
.logo_windowsphone {
background: transparent url('../common/logos/windowsphone.png') no-repeat;
width: 16px;
height: 16px;
}
.contributionLogoTip {
position: absolute;
display: none;
border: solid 1px #CCC;
color: #333;
background-color: #F0F0F0;
font-size: 11px;
font-family: "Segoe UI",Sans-Serif;
box-shadow: 3px 3px 5px #888;
-moz-box-shadow: 3px 3px 5px #888;
z-index: 1003;
padding: 5px;
min-width: 250px;
}
/*----------- End Contribution Logos *******/
.clear
{
clear: both;
}
.customcontributionLogoTip {
position: absolute;
display: none;
border: solid 1px #CCC;
background-color: white;
color: #333;
font-size: 11px;
font-family: "Segoe UI",Sans-Serif;
box-shadow: 3px 3px 5px #888;
-moz-box-shadow: 3px 3px 5px #888;
z-index: 1004;
padding: 5px;
min-width: 250px;
}
.customcontributionTittle {
font-size: 14px;
margin-left: 90px;
}
.customcontributionDiscription {
font-size: 13px;
margin: 10px 5px;
text-align: justify;
}
.customcontribution {
float: left;
position: relative;
margin-right: 6px;
}
.customcontributionLink {
margin-left: 5px;
}
.customcontributionlogo {
float: left;
padding: 0 10px;
margin: 0;
width: 70px;
height: 70px;
background-repeat: no-repeat;
}
.logo_azure_large {
background-image: url('../common/logos/windowsazure_large.png');
}
.logo_visualstudio_large {
background-image: url('../common/logos/visualstudio_large.png');
}
.logo_exchange_large {
background-image: url('../common/logos/exchange_large.png');
}
.logo_ie_large {
background-image: url('../common/logos/ie_large.png');
}
.logo_office_large {
background-image: url('../common/logos/office_large.png');
}
.logo_windows_large {
background-image: url('../common/logos/windows_large.png');
}
.logo_windowsphone_large {
background-image: url('../common/logos/windowsphone_large.png');
}
/* Custome Header */
.dirSubHeading .windowssdk .container
{
background: #FF3300 url('wpappsbackground.png') no-repeat;
color: white;
padding: 8px 10px 18px 170px;
}
.dirSubHeading .windowssdk .container h1, .dirSubHeading .windowssdk .container h2 {
color: white !important;
}
.dirSubHeading .windowssdk .container p {
margin: 20px 0 0 0 !important;
}
.dirSubHeading .windowssdk .container a {
background-color:#ffd800;
color: #2a2a2a !important;
cursor:pointer;
font-size:13px;
font-family:'Segoe UI Semibold','Segoe UI','Lucida Grande',Verdana,Arial,Helvetica,sans-serif;
padding:4px 12px 6px;
}
#container {
min-height: 768px;
}
#leftSubHeaderContainer
{
margin-top:20px;
}
#title h1
{
font-size:25px;
}
#subtitle h2
{
font-size:15px;
}
#subtitle
{
margin-left:10px;
}
#formContainer
{
margin-left:10px;
margin-top:30px;
}
.formLabel
{
float:left;
width: 250px;
}
.formRow
{
clear:both;
padding: 10px 0 10px 10px;
}
.formRecaptchaRow
{
clear:both;
float:left;
margin-top:20px;
margin-left:10px;
margin-bottom:20px;
}
.formSubmitRow
{
clear:both;
margin-top:20px;
margin-left:300px;
margin-bottom:20px;
}
.formControl {
width:300px;
float:left;
}
.formControl .textInput
{
width:300px;
}
.formControl textarea
{
width:425px;
height:100px;
}
.formControl .tag
{
width:425px;
}
.formControl .richText
{
margin-top:10px;
width:500px;
height:440px;
}
.formWideLabel
{
width:500px;
}
.formBigLabel
{
margin-top:20px;
font-size:20px;
}
.formControlBelow
{
clear:both;
margin-top:10px;
width:500px;
}
.required
{
color: Red;
}
.helpText
{
color: #9D9D9D;
font-style: italic;
}
#agreementSummary
{
clear:both;
margin-top:10px;
width:800px;
}
.field-validation-error, .validation-summary-errors
{
color: #FF0000;
font-weight: bold;
}
.tinyMCETemplate {
position: relative;
left: 400px;
width: 300px;
max-height: 300px;
overflow: auto;
}
.IE6 .tinyMCETemplate {
left: 25px;
}
.ownerBar {
padding: 5px;
}
.ownerBar .ownerBarOptions {
float: right;
}
/*Global*/
h1 {
font-size: 36px;
font-family: 'Segoe UI Light';
color: #707070;
font-weight: normal;
margin-bottom: 17px !important;
}
h2, h3, h4, h5, h6, #searchPage h3 {
font-family: 'Segoe UI', 'Lucida Grande', Verdana, Arial, Helvetica, sans-serif !important;
font-weight:normal;
color: #2A2A2A !important;
}
a, a:link, a:visited {
color: #0095c4;
}
body {
color:#707070;
}
.profile-usercard {
color:#707070 !important;
}
/*temporary setting to override msdn_windows.css
can remove once conflicting settings are removed from that file*/
.LocalNavigation, .LocalNavigation .TabOn, .LocalNavigation .TabOn:hover, .LocalNavigation .TabOff, .LocalNavigation .TabOff a:hover {
display: block;
background-color:transparent !important;
color: #0095c4;
}
.LocalNavigation .TabOff a {
color:#707070 ;
}
/*End Global*/
.EyebrowContainer
{
margin-bottom: 0 !important;
}
#sideNav
{
width: 215px !important;
}
#searchPage #mainContentContainer
{
margin-right:0 !important;
margin-left:243px !important;
}
#searchPage .dirSubHeading h2
{
font-size: 14px !important;
font-weight: normal !important;
color: #454545 !important;
line-height: 1.45;
}
#searchPage #directoryListFooter, #searchPage #Pager {
font-size: 14px;
}
#searchPage h2, #searchPage h3
{
font-size: 1.25em !important;
}
#sideNav #contributeSection h3, .sidebar #contributeSection h3, #contributeSection h3
{
font-size: 1.65em !important;
}
.subMenu > h2
{
font-family: 'Segoe UI Light','Segoe UI', 'Lucida Grande', Verdana, Arial, Helvetica, sans-serif !important;
font-weight:normal;
font-size:30px;
margin: 15px 10px 5px 0;
padding-bottom:0px;
}
.itemRow {
}
.itemRow .itemBody, .itemRow .itemInfo {
padding: 18px 17px 20px 0;
font-size: 14px;
line-height: 1.45em;
}
.itemRow .itemTitle {
font-weight: normal;
}
.itemRow .summaryBox{
color: #454545;
}
.Samples #MainContent .itemRow .itemTitle a {
font-weight: 600 !important;
line-height: 1.45;
}
#MainContent a.officialMicrosoftLabel
{
color: #ACACAC;
}
.tabContents {
border-top-width:0px;
}
#UploadPage {
margin: 0px 0px 0px 10px;
}
#UploadPage h1 {
padding: 0;
font-size: 22px;
}
#UploadPage h2 {
color:#F39700 !important;
}
#UploadPage #uploadPageInstruction {
margin-top:10px;
}
#UploadPage fieldset {
margin-left:0px;
}
#UploadPage fieldset h2 {
font-weight:normal;
}
#UploadPage fieldset#uploadsForm{
margin-top:25px;
}
#UploadPage fieldset#summary textarea {
margin-left:0px;
}
#UploadPage .projectTypeChoice > div {
height: 250px;
}
#sideNav {
}
#sideNav .section h3 {
background-color: transparent;
}
#sideNav .section UL LI {
border-bottom-width: 0px;
}
#sideNav .section form > div {
border-bottom: none;
color: #707070;
}
#sideNav .section ul li > div.itemCount
{
color: #707070;
}
#searchPage {
}
#searchPage h2, #searchPage h3 {
text-transform:none;
background-color:transparent;
font-weight:normal;
font-size:1.2em;
}
#searchPage .browseFilterBar {
background-color:transparent;
border-width:0px;
font-weight:normal;
}
#requestsPage {
padding-top:15px;
}
#requestsPage .tabHeaders {
overflow: visible;
}
#requestsPage #requestsList {
border: none;
}
#requestsPage h2, #requestsPage h3 {
text-transform:none;
background-color:transparent;
font-weight:normal;
font-size:1.2em;
}
.reqBrowseContent .title {
font-weight: bold !important;
color:#000 !important;
font-family: 'Segoe UI', 'Lucida Grande', Verdana, Arial, Helvetica, sans-serif !important;
}
.reqDescPage #header #votenumber {
height: 30px;
padding: 9px 12px 3px 12px;
}
#extraActions {
}
#extraActions .section
{
margin-bottom: 10px;
}
#extraActions .section a
{
font-weight:normal;
}
#extraActions #contributeSection div img {
width:0px;
}
#projectPage {
}
#projectPage .projectTitle {
color: #707070;
margin: 5px 0px 15px 0px;
}
#projectPage h2.projectSummary, #projectPage #projectInfo, #projectPage .tabHeaders {
font-size: 14px !important;
line-height: 1.45em;
color: #454545 !important;
font-weight: normal !important;
}
#projectPage #projectInfo a {
color: #00749e;
}
#projectPage #Downloads a, #projectPage #Downloads label {
font-size: 14px;
}
#projectPage #reportAbuse {
font-size: 1em;
}
#projectPage #publishBar a, #projectPage #publishBar a:visited {
color: #0095c4;
font-weight: normal;
}
#projectPage #Collections .bevelButton{
background-color: #F8F8F8;
color: #0095C4;
border: 1px solid #707070;
}
#projectPage #DiscussionsTabPane .threadHeader .title {
font-weight:bold !important;
color:Black !important;#F8F8F8;
font-family: 'Segoe UI', 'Lucida Grande', Verdana, Arial, Helvetica, sans-serif !important;
}
#projectPage .sidebar .section .titleBar h3 {
font-weight:normal;
font-size:1.2em;
}
#LocalNav {
}
#LocalNav.HeaderTabs {
margin-left:11px;
}
#searchPage .dirSubHeading h1
{
margin-bottom:17px !important;
}
此差异已折叠。
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册